Ir ao conteúdo
  • Cadastre-se

Posts recomendados

Postado

Preciso fazer um programa que corrija uma prova com 4 questões de múltipla escolha (a, b,
c, d ou e) para 3 estudantes. Cada questão vale 1 ponto. Tenho que ler o gabarito, e
para cada estudante tenho que ler também a sua matricula (do tipo int) e suas respostas. Depois, tenho que:
Para cada estudante, mostre a sua matrícula, suas respostas e sua nota final. O percentual de
aprovação, assumindo que a média é 7.0.

 

Não consigo terminar. Alguém me ajuda! O que consegui fazer até agora está aqui:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

#define L 4
#define C 3

main() {
    setlocale(LC_ALL,"portuguese");
    char matriz[L][C];
    int i, j, resultado[L];
    char vetor[L];
    printf("Informe as respostas dos alunos:\n\n");
    for (i = 0; i < L; i++) {
        for (j = 0; j < C; j++) {
            printf("Resposta do %dº aluno para a questão %d: ", j+1, i+1);
            scanf("%c", &matriz[i][j]);
            fflush(stdin);
        }
        printf("\n");
    }
    printf("\n\nInforme o gabarito das questões:\n\n");
    for (i = 0; i < L; i++) {
        printf("Gabarito da questão %d: ", i+1);
        scanf("%c", &vetor[i]);
        fflush(stdin);
    }
    for (j = 0; j < C; j++) {
        resultado[j] = 0;
        for (i = 0; i < L; i++){
            if (matriz[i][j] == vetor[i]) {
                resultado[j]++;
            }
        }
    }
    printf("\n\n==============>>>>> RESULTADO <<<<<==============\nQuantidade de acertos de cada um dos cinco alunos:\n");
    for (j = 0; j < C; j++) {
        printf("\nO %dº aluno teve um total de: %d acertos.", j+1, resultado[j]);
    }
    printf("\n");
    system("pause");
	return 0;
}

 

Postado

@Antônio da Silva Se a questão não exigir o uso de matriz, acho você poderia usar struct. Assim fica mais fácil armazenar as informações como a matrícula e os pontos além das respostas. Algo assim,

 

#include <stdio.h>

typedef struct{
    char matricula[10];
    char resposta[4];
    int pontos;
}Aluno;

int main(){
    char gab[4];
    Aluno aluno[3];
    int i,r;
    
    printf("Gabarito: ");
    scanf("%c %c %c %c %c",
        &gab[0],&gab[1],&gab[2],&gab[3]);
    
    for(i=0;i<3;i++){
        printf("Matricula %d: ",i+1);
        scanf(" %s",aluno[i].matricula);
        aluno[i].pontos = 0;
        
        for(r=0;r<4;r++){
            printf("Resposta %d do aluno %d: ",r+1,i+1);
            scanf(" %c",&aluno[i].resposta[r]);
            if(aluno[i].resposta[r] == gab[r]){
                aluno[i].pontos++;
            }
        }
    }
    return 0;
}

 

  • Curtir 1
Postado
2 horas atrás, Midori disse:

Se a questão não exigir o uso de matriz, acho você poderia usar struct

 

Certamente caro colega de código, a linguagem que permite múltiplas maneiras de se fazer uma só coisa. Na correção e resolução os professores/alunos se protegem com restrições de conteúdo, caso contrário, não importa a forma só o resultado.

 

Outras formas envolvem; aritmética, aritmética de ponteiros, operadores bitwise , struct (você usa) e devem ter mais.

"

 

Com Aritmética se diz que:       a, b, c, d

São 4 questões de 4 escolhas (1, 2, 3, 4). Se eu [3] respondi: 3144.

 

Vem

#define MATRICULA	(0)
#define RESPOSTA	(1)
#define NOTA		(2)

int alunos [4][3];
scanf ("%d", &alunos[3][RESPOSTA]); /* Gravou 1243 */

// Imagine que o gabarito é: 1234
alunos [3][NOTA]= /*                   Valor exp. bool é 0, 1 */
            + ((alunos[3][RESPOSTA] % 10)         ==  (1234 % 10))
            + ((alunos[3][RESPOSTA] % 100 / 10)   ==  (1234 % 100 / 10))
            + ((alunos[3][RESPOSTA] % 1000 / 100) ==  (1234 % 1000 / 100))
            + ((alunos[3][RESPOSTA] / 1000)       ==  (1234 / 1000));

	printf ("NOTA: %d\n", alunos [3][NOTA]); /* NOTA: 1 */

"

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

×
×
  • Criar novo...