
kgin
Membro Pleno-
Posts
386 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que kgin postou
-
@MUrisCuri Preste atenção na minha captura de tela. Quando a variável ind chega no if ela vale 1, é isso não faz sentido nessa linha. enquanto num[ind] vale 8 (referente a minha captura de tela) e num[ind+1] vale ??? (basicamente qualquer coisa que estiver na memoria sendo referenciada nesse momento, está apontando para um lugar inexistente) então você vai receber aquele numero negativo ou basicamente qualquer coisa que esteja na memoria. outro problema e quando você zera a variável num nesse trecho Eu não sei C++, mas você não deveria usar algo como erase ou delete? por que ao meu ver os "espaços" reservados para esses números ainda vão continuar ali. Se eu fosse resolver isso em C eu usaria uma string para pegar os números, depois checaria se não há um caractere "|" na string para só então converter o numero com a função atoi() e colocar no vetor.
-
@PODE-PÁ O printf nessa linha está sem o "F" E se você estiver usando o TDM-GCC provavelmente não vai compilar por causa da biblioteca conio.h Se você não entende nada de compilador e está usando o code:blocks eu recomendo usar esse site (replit.com) por hora até você aprender o básico (e também por que ele avisa o que está errado).
-
C Como procurar e achar uma letra específica dentro de uma palavra em char?
kgin respondeu ao tópico de Ricardo_Nascimento em C/C#/C++
Eu dei uma "consertada" no seu programa, de uma olhada nos comentários para entender o que está acontecendo. -
@Um mero usuário Se você estiver no linux eu recomendo usar uma combinação de VScode + C/C++ IntelliSense, se configurado corretamente ele vai apontar o erro antes mesmo de você compilar o código. Se não puder usar o VScode nessa configuração, experimente o site replit. São linguagens diferentes que um dia foram a mesma, mas agora não tem nada a ver uma com a outra. E elas só compilam porque talvez o seu gerenciador de pacotes instalou os dois compiladores (GCC , G++) na maquina.
-
Pelo o que eu entendi você tem que colocar isso em uma função, dessa maneira #include <stdio.h> /* Necessario para usar as funções printf, scanf, getchar ... */ #include <stdlib.h> // necessário p/ as funções rand() e srand() #include <time.h> //necessário p/ função time() /* Faz uma função que retorna de 1 a 6 */ int GeraNumeros1a6(void) { int numero; numero = rand()%6; /* Gera um numero de 0 até 6 */ if (numero < 6) /* Acrecenta 1 se caso o numero for menor do que 6 */ { return(numero+1); } return(numero); /* Só retorna o numero */ } int main(void) { int contador; printf("Gerando 6 valores aleatorios:\n\n"); srand(time(NULL)); for (contador = 0; contador < 6; contador++) { printf("%d ", GeraNumeros1a6()); } getchar(); /* Pausa o programa */ return 0; } Depois é só contar quantas vezes cada numero aparece.
-
C Fazer Alocação Dinamica em um código de sorteio de números em C
kgin respondeu ao tópico de Luc4s M0ur4 em C/C#/C++
O seu algoritmo está meio confuso para mim, eu refiz uma parte que eu entendi como exemplo Se você estiver fazendo algo como uma mega sena, eu recomendo usar um algoritmo como o fisher yates para embaralhar os números. Fisher yates wikipedia Meu exemplo no replit:SorteioDeNumeros -
Travou! Você acabou de descrever o meu pc de mesa. Desista, simplesmente não vai funcionar, eu já tentei por um bom tempo. Eu tenho um notebook sony vaio com um i3 de terceira geração que roda o unreal engine 4 todo *****, então por aí já da pra tirar que é um programa muito pesado. Eu vi que você fez algumas perguntas sobre criação de jogos, eu vou passar algumas dicas pra você. Você que criar jogos por hobbie ou quer fazer alguma coisa mais seria? se for por hobbie eu recomendo começar com alguma coisa bem simples, é isso vale para o motor escolhido também. game engines simples de dominar são -Construct -GameMaker -RPGMaker -MonoGame Se for tentar alguma linguagem de programação tente escolher uma que funcione em qualquer buraco e que seja simples. Como Java ou JavaScript. Agora se você que trabalhar com isso algum dia, eu recomendo começar com uma engine simples e leve, e que vá ensinar tudo que você precisa. Pelo hardware que você tem eu recomendaria godot, porque tem uma documentação extensa e vários tutorias tornando tudo mais fácil. Outra opção seria a unity pelos mesmos fatores da godot, mas essa é bem mais pesada é eu tenho quase certeza que o seu sistema não vai suportar.
-
@devair1010 Eu não acho esse exemplo muito pratico para alguém que está começando a programar, principalmente que ele quebra a lógica do programa com esse goto. Um exemplo "melhor" seria assim. #include <stdio.h> int main(void) { int numero = 0; /* Repete até o número estiver dentro da faixa desejada */ do { /* Pega um numero */ printf("\nDigite um numero entre 0 e 10:\t"); scanf("%i%*c", &numero); /* Testa se está fora da faixa desejada */ if (numero < 0 || numero > 10) { printf("\nDigite novamente!"); } /* Repete se o número estiver fora da faixa */ } while (numero < 0 || numero > 10); printf("\nOk\nO Numero %i foi aceito.", numero); getchar(); /* Pausa o programa */ return(0); }
-
C Olá! fiz esse código de struct, sobre cadastro de aluno, porém esta dando muitos
kgin respondeu ao tópico de Cynthia Moreira em C/C#/C++
Toda vez que você pega algo com o scanf, ele deixa a tecla enter para trás o "%*c" retira o enter do buffer do teclado. Isso com o tempo se torna um problema. -
C Olá! fiz esse código de struct, sobre cadastro de aluno, porém esta dando muitos
kgin respondeu ao tópico de Cynthia Moreira em C/C#/C++
@Cynthia Moreira Consegue compreender a lógica deste? #include <stdio.h> #include <stdlib.h> /**1- Crie uma struct chamada Aluno. ok Ela deve conter um nome (string), matrícula (um valor numérico), um vetor de 4 notas (ponto flutuante) e um campo de média final (ponto flutuante). OK :)*/ struct ficha_aluno { char nome[256]; int matricula; float notas[4]; float media; }; /**2- Crie uma função que recebe os valores de nome, matrícula e as 4 notas pelo teclado e escreve nos campos de um Aluno (a média final deve ser calculada em outra função - ver questão 4).ok :)*/ /**3- Crie uma função que imprime todos os campos de um Aluno. Quando for imprimir o valor de média final, assinalar ao lado do valor se o aluno passou (média 7 ou mais), ficou de AF (média 4 ou mais, mas abaixo de 7) ou está reprovado (média abaixo de 4)*/ ///4- Crie uma função que recebe Aluno e calcula a média final. /// 5- Crie uma função que recebe um vetor de Alunos e retorna qual aluno teve a maior média final int main(void) { struct ficha_aluno alunos[4]; int contador, auxiliar; /* Pega as informações de 4 alunos */ for (contador = 0; contador < 4; contador++) { printf("\nDigite o nome do %i aluno:\t", contador); fgets(alunos[contador].nome, 256, stdin); printf("\nDigite o numero da matricula do %i aluno:\t", contador); scanf("%i%*c", &alunos[contador].matricula); for (auxiliar = 0; auxiliar < 4; auxiliar++) { printf("\nDigite a nota %i do aluno %i:", auxiliar, contador); scanf("%f%*c", &alunos[contador].notas[auxiliar]); } } /* Mostra a informação dos alunos */ for (contador = 0; contador < 4; contador++) { printf("\n\nNome do aluno %i-%s", contador, alunos[contador].nome); printf("\nNumero da matricula do aluno %i:%i", contador, alunos[contador].matricula); printf("\nNotas do aluno %i", contador); for (auxiliar = 0; auxiliar < 4; auxiliar++) { printf("\nNota %i:%.2f", contador, alunos[contador].notas[auxiliar]); } } getchar(); /* Pausa o programa */ return(0); } -
C Olá! fiz esse código de struct, sobre cadastro de aluno, porém esta dando muitos
kgin respondeu ao tópico de Cynthia Moreira em C/C#/C++
@Cynthia Moreira Você sabe o que você está fazendo? -
@Gabriel Barbosa Brandao De uma olhada também no livro "como o linux funciona", ele aborda vários aspectos do shell e da própria programação em C, e do sistema linux e claro.
-
Redirecionamento de entrada e saída de dados, neste vídeo tem uma explicação melhor de como funciona. https://youtu.be/bAa0BNB-fcE Vários, tomando o linux como exemplo tem o grep, diff, less, file, find, locate, sort e os caracteres caracteres especiais. Essa eu não sei responder, mas a muitos anos atrás quando eu usava windows (XP) a maior parte funcionava (Só que a maioria tinha outro nome, ou funcionava de uma forma semelhante).
-
Os que eu já li, é posso afirmar que e bom são. Black Art of 3D Game Programming: Writing Your Own High-Speed 3D Polygon Video Games in C tricks of the windows, game programming gurus. autor andré lamother. Esses que eu citei são muito velhos, e eu não sei o quanto directx mudou de lá pra cá. Esses outros são mais novos, mas eu nunca li. Introduction to 3D Game Programming with DirectX 9. autor frank d. luna. Introduction to 3D Game Programming with DirectX 11. do mesmo autor. Se me lembro bem no próprio site da microsoft ela disponibiliza a documentação do directx. Eu não recomendo você começar pelo directx, porque ele é muito extenso e não muito intuitivo se você estiver começando. Bibliotecas boas para começar a desenvolver jogos são a allegro e sdl.
-
@DanielTenCaten Você só pode declarar a função main uma vez, depois disso você pode declarar qualquer função que não tenha o nome main nem que seja um identificador reservado da linguagem. Exemplo de funções. #include <stdio.h> /* Declara as funções */ void primeiraFuncao(void) { printf("\nPassou na primeira funcao!\n"); } void segundaFuncao(void) { printf("\nPassou na segunda funcao!\n"); } void pressioneEnter(void) { printf("\nPressione enter para continuar!"); getchar(); /* Pausa o programa */ } int main(void) { /* Chama a primeira função */ primeiraFuncao(); /* Mostra a mensagem na tela */ pressioneEnter(); /* Chama a segunda função */ segundaFuncao(); /* Mostra a mensagem na tela */ pressioneEnter(); return(0); } recomendo você dar uma lida no livro C completo e total no capitulo de funções, e na pagina 91 sobre blocos de comando.
-
Nós mostre o que você já fez para então nós o ajudarmos.
-
@paulopimenta6 O problema é que você está reservando memória e não está usando-a para nada, preste atenção que quando você retorna o ponteiro ele não está indo a lugar algum. ele é passado pelo return da função, é quando o programa vai fazer o próximo printf ele ainda não está inicializado. Exemplo de uma lista #include <stdio.h> #include <stdlib.h> struct no { int valor; struct no *proximo; }; int main(int argc, char *argv[]) { struct no *inicio_lista = NULL, *fim_lista = NULL, *aux; /* Cria o primeiro nó na lista */ inicio_lista = malloc(sizeof(*inicio_lista)); /* Checa se foi possível reservar memoria */ if (inicio_lista == NULL) { perror("Erro nao foi possivel reservar memoria "); return(1); /* Encerra o programa */ } /* Coloca um valor na lista */ inicio_lista->valor = 35; /* Inicia o final da lista */ inicio_lista->proximo = NULL; fim_lista = inicio_lista; /* Cria o segundo nó na lista */ fim_lista->proximo = malloc(sizeof(*fim_lista)); /* Checa se foi possível reservar memoria */ if (fim_lista->proximo == NULL) { perror("Erro nao foi possivel reservar memoria "); return(1); /* Encerra o programa */ } /* coloca o final na lista */ fim_lista = fim_lista->proximo; fim_lista->proximo = NULL; /* Coloca um valor na lista */ fim_lista->valor = 44; /* Mostra a lista */ aux = inicio_lista; while (aux != NULL) { printf("\n%i", aux->valor); aux = aux->proximo; } /* Apaga a lista */ aux = inicio_lista; while (aux != NULL) { struct no *tmp = aux->proximo; free(aux); aux = tmp; } /* Tira a referencia dos ponteiros */ inicio_lista = fim_lista = aux = NULL; getchar(); /* pausa o programa */ return(0); } Recomendo você aprender a usar o gdb caso esteja usando o compilador gcc.
-
C++ codigo pra ver nota, idade, duracção do video c++
kgin respondeu ao tópico de rafael carvalho melo em C/C#/C++
@rafael carvalho melo Qual seria a sua duvida agora? -
C++ codigo pra ver nota, idade, duracção do video c++
kgin respondeu ao tópico de rafael carvalho melo em C/C#/C++
@rafael carvalho melo Você tem que utilizar streams, eu não sei C++ mas aqui tem um link de como utilizar que parece ser fácil de entender. Entrada/Saída com Streams Exemplo de como seria. #include <iostream> #include <string> using namespace std; int main() { string aluno; int idade = 0; cout << "Digite o nome do aluno\n"; cin >> aluno; cout << "Digite a idade do aluno\n"; cin >> idade; cout << "Nome do aluno:" << aluno << "\n"; cout << "Idade do aluno:" << idade << "\n"; return 0; } -
C++ codigo pra ver nota, idade, duracção do video c++
kgin respondeu ao tópico de rafael carvalho melo em C/C#/C++
@rafael carvalho melo Mas você está fazendo em qual linguagem de programação? -
C Por que programas .exe estão dando erro de vírus?
kgin respondeu ao tópico de PT_Richard_Assis em C/C#/C++
@PT_Richard_Assis Qual sistema operacional você está usando? É normal algumas detecções de vírus nos arquivos compilados com a configuração padrão do codeblocks, mas essas suas aí estão meio estranhas. De uma olhada no meu. Pode ser que o seu sistema esteja com algum tipo de malware. -
É como o @mauro_b explicou, a maneira digamos assim "correta" seria assim. #include <stdio.h> #include <stdlib.h> void aloca(float **p, int tam); void apaga(float **p); int main(void) { int cont; float *numeros; aloca(&numeros, 10); if (numeros == NULL) { return(1); /* Erro! */ } for (cont = 0; cont < 10; cont++) { numeros[cont] = cont+1; } for (cont = 0; cont < 10; cont++) { printf("\n%.2f", numeros[cont]); } getchar(); apaga(&numeros); return(0); } void aloca(float **p, int tam) { *p = malloc(sizeof(*p)*tam); } void apaga(float **p) { if (*p != NULL) { free(*p); } *p = NULL; } aprenda a usar o gdb (ou o debug disponível do seu compilador) que ele será uma mão na roda nesse tipo de situação.
-
Me restringir ao máximo em só usar elementos da propria linguagem C, são conceitos que no geral você ver nas primeiras paginas de um livro de C.
-
A solução seria você colocar a números aleatórios com a função rand(). a linha 8 e 9 estão erradas, observe bem aqui O vetor só vai de 0 a 9, é cadê os outros 90 números?
-
@catherineprokhorov Não é possível você fazer um shift right (rolar a direita) em vetores, você teria que implementar isso. #include <stdio.h> #define T_STR 256 enum direcao { ESQUERDA, DIREITA }; void rolaString(char *str, enum direcao direcao, unsigned short quantidade); int main(void) { char str[256] = "Imposto e roubo!"; rolaString(str, DIREITA, 7); printf("\n%s", str); getchar(); return(0); } void rolaString(char *str, enum direcao direcao, unsigned short quantidade) { char tmp[T_STR]; unsigned short tamanho_str, cont, aux; for (tamanho_str = 0; str[tamanho_str]; tamanho_str++); switch (direcao) { case ESQUERDA: break; case DIREITA: if (quantidade < tamanho_str) { /* Copia a primeira parte */ for (cont = tamanho_str-quantidade, aux = 0; str[cont]; cont++, aux++) { tmp[aux] = str[cont]; } /* Copia a segunda parte */ for (cont = 0; cont < tamanho_str-quantidade; cont++, aux++) { tmp[aux] = str[cont]; } tmp[tamanho_str] = '\0'; for (cont = 0; tmp[cont]; cont++) { str[cont] = tmp[cont]; } } break; } } Eu fiz esse exemplo de como seria para a rolar a direita.
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais