Ir para conteúdo

POWERED BY:

Arquivado

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

Hellsius

Correção de prova

Recommended Posts

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

É 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

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

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

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

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

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

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

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

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

×

Informação importante

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