Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hellsius

[Resolvido] Programa de correção de prova não da saida esperada

Recommended Posts

Fiz a parte principal do exercicio abaixa, só não fiz o RA, RM por que nem o principal deu certo, kkk. Seguinte, quando informo as respostas das perguntas ele sempre me retorna como nota 0, mesmo que acerte alguma do gabarito ele sempre retorna zero e se eu coloco uma quantidade de alunos ele só pede as respostas das perguntas do primeiro aluno e nunca do outros, eu sou novato em programação e este émeu segundo exercicio com vetor e ja revisei o codigo varias vezes e não consigo achar algum erro. Segue o exercicio e o codigo abaixo:

 

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

Olá

 

Eu modifiquei o código e coloquei os comentários ao lado de cada item, espero ter ajudado

 

int main() 
{ 
 // Variaveis 
 char gab[5] = { 'B', 'D', 'A', 'C', 'A' }; //Precisa de um vetor de 5 espaços para armazenar 5 notas (começa no 0 e termina no 4)
 char resp[5]; //São 5 respostas para 5 perguntas
 int qtalunos; 
 int nota; 
 int y, i; //Retirada da variavel pergunta e x 

    // Entrada de Dados 
    printf("Informe a quantidade de alunos: "); 
    scanf("%d", &qtalunos); 

    // Processamento 
    for(i=1; i<=qtalunos;i++) //O igual(=) é necessario, se qtalunos=2, o for tem q passar duas vezes, antes passava uma vez só
    {//i_for2 
              nota=0; //Precisa zerar a nota toda vex para antes usá-la novamente
              for(y=0;y<5;y++) //Use apenas y. 
              {//i_for1 Essa parte precisa ser repetida para cada aluno
                        printf("Informe a resposta da pergunta %d: ", y+1); //A antiga variavel pergunta era sempre pergunta = y + 1  
                        scanf("%s", &resp[y]);                
              }//f_for1
              for(y=0;y<5;y++) //Use apenas y. 
              {//i_for1 
                        if(toupper(resp[y])==gab[y]) 
                        {//i_if1 
                                 nota = nota + 2;                          
                        }//f_if1
              }//f_for1
              printf("A nota do %d° aluno eh: %d\n\n", i, nota); 
    }//f_for2 
    //Voce pode usar um for aqui para varrer o vetor e imprimir as notas de cada aluno
// Final do Codigo 
getch();       
}

 

Como o intuito é usar vetor, eu deixei a parte de pegar o gabarito separado da parte de conferir o gabarito, mas podia colocar juntos q dava na mesma e n precisaria usar o vetor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo funcionou muito bem, só esta parte que não:

if(toupper(resp[y])==gab[y])

 

 

 

Aproposito, foi perfeita suas explicações, me ajudaram com o programa e me deu um up a mais de conhecimento, muito bom mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.