Ir ao conteúdo
  • Cadastre-se

Como manipular vetores


Posts recomendados

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);
 
 
 
}
Link para o comentário
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;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!