Ir ao conteúdo
  • Cadastre-se
Jessé Pereira

Como manipular vetores

Recommended Posts

Boa noite galera, to começando e to perdido nesse exercício:

 

"Fazer um programa em C  para  corrigir provas de múltipla escolha. Cada prova tem 30 questões, cada questão valendo um ponto. O primeiro conjunto de dados a ser lido será o gabarito para a correção da prova. Os outros dados serão os números dos alunos e suas respectivas respostas, e  o último número , do aluno fictício será 9999. O programa deverá  calcular e imprimir :

·      para cada aluno, o seu número e sua  nota ;

·      a porcentagem de aprovação , sabendo-se que a nota mínima de aprovação é 6 ;

·      a maior e a menor nota;"

 

A lógica que pensei foi criar um vetor que leia e guarde o gabarito do digamos "professor" e para cada aluno guardasse o seu número de identificação na primeira posição do vetor e as respostas do aluno nas posições seguintes do mesmo vetor. No final do programa eu pensei em comprar o vetor gabarito com o vetor de cada aluno e indo guardando as respostas. Minha dúvida é será que é possível criar algum código que acrescente vetores a medida que eu precise ? Já que nesse exercício eu não sei o número de alunos. A unica coisa que criei no código foi a entrada desse vetor que eu chamei de gabarito, por isso não postei o código(julguei não adiantar muita coisa). Queria uma orientação da galera se possível , to bem perdido haha


Eu acabei fazendo esse código, mas com apenas um aluno de entrada. 

 

int main(){
 
 
char gab[10];
char resposta[10];
int i,acertos;
 
printf("Digite o gabarito\n");
for(i=0; i<10; i++){
scanf("%c", &gab);
}
 
printf("Digite as respostas do aluno\n");
for( i=0; i<10; i++){
scanf("%c", &resposta);
}
 
for(i=0; i<10; i++){
if(gab == resposta)
acertos++;
}
 
printf("O numero de acertos foi %d", acertos);
 
 
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

 será que é possível criar algum código que acrescente vetores a medida que eu precise

 

Sim. Isso se chama alocação dinâmica. A menos que você já tenha sido apresentado a ponteiros, não rola.

O que dá pra fazer no atual estado é ter apenas 2 vetores: o gabarito e o das respostas dos alunos. Os demais dados são atualizados a cada iteração.

(Supondo que o 9999 seja um código que deve ser processado. Caso contrário, inclua um if dentro do while)

#include <stdio.h>#define MAX_QUESTOES 30#define NOTA_APROVACAO 6void leitura_informações(char *v) {   for(int i=0; i<MAX_QUESTOES; i++) {       scanf("%c%*c", v[i]);   }}int verificar_respostas(char *g, char *r) {   int acertos = 0;   for(int i=0; i<MAX_QUESTOES; i++) {      if (g[i] == r[i]) acertos++;   }   return acertos;}int main(void) {   char gabarito[MAX_QUESTOES];   char respostas[MAX_QUESTOES];   int numero_aluno = 0;   int maior_nota=0, menor_nota=0;   int nota;   int contagem_alunos = 0, aprovados = 0;   printf("Informe o gabarito: ");   leitura_informacoes(gabarito);   while(numero_aluno != 9999) {       printf("Informe o código do aluno: ");       scanf("%d%*c", &numero_aluno);       contagem_aluno++;       printf("Informe as respostas: ");       leitura_informacoes(respostas);       nota = verificar_respostas(gabarito, respostas);       if (nota > NOTA_APROVACAO) aprovados++;       if (nota > maior_nota) maior_nota = nota;       if (nota < menor_nota) menor_nota = nota;       printf("Aluno %d - Nota: %d\n", numero_aluno, nota);   }   printf("Porcentagem de aprovação: %.2f\n", (float)aprovados/contagem_aluno);   printf("Maior nota: %d\nMenor nota: %d\n", maior_nota, menor_nota);   return 0;   return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×