Hellsius 0 Denunciar post Postado Maio 6, 2011 Tentei fazer este exercicio de vetor, mas logo nesta linha da erro: char gab[0]='B', gab[1]='D', gab[2]='A', gab[3]='C', gab[4]='A'; Obs: Este é meu segundo programa que estou fazendo com verto e tentei nates fazer a parte basica, por isso não coloquei RA e RM igual a resolução abaixo pede. Poderia me ajudar? 4) Faça um programa que calcule as notas dos alunos em uma prova de múltipla escolha. Cada prova tem 5 questões e cada questão vale 2 pontos. Primeiro deverá ser lida a quantidade de alunos e o gabarito para a correção da prova (vetor). Depois, para cada aluno ler o ra e suas respectivas respostas. Para cada aluno exibir seu rm e sua nota (ex.: 4 acertos, nota 4). #include <stdio.h> #include <conio.h> #include <math.h> int main() { // Variaveis char gab[0]='B', gab[1]='D', gab[2]='A', gab[3]='C', gab[4]='A'; // Gabarito com as respostas da prova char resp[4]; // Respostas informada pelo usuario int qtalunos; int nota=0; int pergunta, y, i, x; // Imprementos para o for // Entrada de Dados printf("Informe a quantidade de alunos: "); scanf("%d", &qtalunos); // Processamento for(pergunta=1, y=0; pergunta<5, y<5; pergunta++, y++) // Este for coleta as respostas das 5 perguntas. {//i_for1 printf("Informe a resposta da pergunta %d", pergunta); scanf("%s", &resp[y]); }//f_for1 for(i=1; i<qtalunos; i++) // Este for pega a quantidade de alunos e faz com que o 1° aluno entre no segundo for. {//i_for2 for(x=0; x<5; x++) // Entrando neste segundo for deste primeiro aluno, é feita uma comparação das respostas e perguntas do aluno. {//i_for3 if(toupper(resp[x])==gab[x]) {//i_if1 nota = nota+2; }//f_if1 }//f_for3 printf("A nota do %d° aluno eh: %d", i, nota); // Depois da comparação é exibido qual aluno e sua nota na avaliação. }//f_for2 // Final do Codigo getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 6, 2011 É que essa declaração não existe. O certo seria: char gab[4] = { 'B', 'D', 'A', 'C' }; // Gabarito com as respostas da prova Note que isso NÃO é uma String, é uma matriz de caracteres. Uma string seria: char gab[5] = { 'B', 'D', 'A', 'C', '\0' }; // Gabarito com as respostas da prova Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Maio 8, 2011 Obrigado Evil Software pelo esclarecimento sobre vetor. Tenho mais uma duvida. Nesta linha: for(pergunta=1, y=0; pergunta<5, y<5; pergunta++, y++) Quando a variavel "pergunta" for igual a 5 e a variavel "y" for igual a 4, acontecera que a variavel "pergunta" na condição "pergunta<5" sera falsa e a condição "y<5" ainda sera verdadeira, ai gostaria de saber se nesta situação o laço ira se repetir ou so ate as duas variaveis se tornarem falsas para que dai saia do loop??? ---- Bom o programa compilou certinho, mas quando coloco as respostas das 5 perguntas ele mostra como resultado a nata do aluno como se fosse nota zero e depois fecha o programa sem pedir as notas do segundo aluno, sendo que informei a quantidade maior que 2 alunos por exemplo. Obs: Comecei a estudar vetor agora, me desculpem a ignorancia. Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 8, 2011 Olá! Todos começaram igual você um dia, não precisa se desculpar... Quando a variavel "pergunta" for igual a 5 e a variavel "y" for igual a 4, acontecera que a variavel "pergunta" na condição "pergunta<5" sera falsa e a condição "y<5" ainda sera verdadeira, ai gostaria de saber se nesta situação o laço ira se repetir ou so ate as duas variaveis se tornarem falsas para que dai saia do loop??? Acredito que o laço seria terminado, porque uma das variáveis já é igual a 5. Não seria mais fácil fazer 2 fors aninhados? Um for para a variável pergunta com outro for dentro dele com a variável y? Tipo: for(pergunta = 1; pergunta < 5; ++pergunta) { // Código... for(y = 0; y < 5; ++y) { // Código... } // Código... } Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Maio 8, 2011 Os dois for's aninhados não daria certo por que o usuario teria que informar 5 respostas para a pergunta 1 e depois 5 respostas para a pergunta 2 e assim sucessivamente. Nesta parte o codigo apenas deve armazenar as 5 notas no vetor[y] e então ir para o proximo laço. Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 8, 2011 Não dá para usar uma variável só? Quando tiver tempo vou dar uma olhadinha no código... Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Maio 8, 2011 Tem que ser as duas variaveis mesmo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 10, 2011 Interessante seu primeiro post Lord Evil nunca tinha pensado dessa forma, para mim sempre tratei como strings qnd é char* ou char[]; :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 10, 2011 Interessante seu primeiro post Lord Evil nunca tinha pensado dessa forma, para mim sempre tratei como strings qnd é char* ou char[]; :thumbsup: Hehehe, eu descobri isso pq precisava de usar algo assim para editar uma c-string e estava sem muita vontade de procurar alguma função que me permitisse editar caractere a caractere da string hahaha.... Mas tipo, o jeito em que escrevemos na declaração: char string[] = "TESTANDO"; Na verdade, é uma forma simplificada de declarar uma matriz de chars, para facilitar a criação de strings... O modo mais completo seria: char string[] = { 'T', 'E', 'S', 'T', 'A', 'N', 'D', 'O', '\0'; Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Maio 11, 2011 Interessante seu primeiro post Lord Evil nunca tinha pensado dessa forma, para mim sempre tratei como strings qnd é char* ou char[]; :thumbsup: Cuidado pra não confundir arrays com ponteiros. Uma string, em C, é uma array cujo último elemento tem valor igual a '\0'. Um ponteiro pode ser usado para acessar seus elementos, mas o ponteiro em si é muito diferente de um vetor. O conceito de string é mais abstrato que o de tipos de dados definidos pelo C. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 11, 2011 a sim sim guidjos isso eu sei.. só quis dizer que eu nunca tinha pensado na "diferença" entre matriz de caracteres x string; []s Compartilhar este post Link para o post Compartilhar em outros sites