Crie uma estrutura representando os alunos da turma. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova.
a) Permita ao usuário entrar com os dados de 5 alunos.
b) Encontre o aluno com maior nota da primeira prova.
c) Encontre o aluno com maior média geral.
d) Encontre o aluno com menor média geral
e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para
aprovação.
Fiz este código para essa struct, mas a partir do print do aluno com maior média não sai mais nada. Vocês poderiam me ajudar a encontrar o erro, por favor?
Aceito dicas pra deixar o código mais “enxuto” também.
#include<stdio.h>
#include<stdlib.h>
struct alunos {
char matricula[10];
char nome[50];
float nota[3];
};
int main(){
struct alunos a[5];
int i, maiornota1_indice, maiormediageral_indice, menormediageral_indice;
float maiornota1=0,mediageral[5], maiormediageral=0, menormediageral;
printf("\nCADASTRO\n\n");
//Entrada de 5 usuarios.
for(i=0; i<5; i++){
printf("\n\nDigite a matricula do %do Aluno: ",i+1);
scanf("%s",&a[i].matricula);
printf("Nome do %d Aluno: ",i+1);
scanf("%s",&a[i].nome);
printf("Nota 1: ");
scanf("%f",&a[i].nota[0]);
printf("Nota 2: ");
scanf("%f",&a[i].nota[1]);
printf("Nota 3: ");
scanf("%f",&a[i].nota[2]);
mediageral[i] = a[i].nota[0]+a[i].nota[1]+a[i].nota[2];
if(maiornota1<a[i].nota[0]){
maiornota1 = a[i].nota[0];
maiornota1_indice = i;
}
if(mediageral[i]>maiormediageral){
maiormediageral = mediageral[i];
maiormediageral_indice = i;
}
if(mediageral[i]<menormediageral){
menormediageral = mediageral[i];
menormediageral_indice = i;
}
};
printf("\nAluno com maior Nota 1: %s",a[maiornota1_indice].nome);
printf("\nAluno com maior media: %s",a[maiormediageral_indice].nome);
printf("\nAluno com menor media: %s",a[menormediageral_indice].nome);
int j=0;
for(j=0; j<5; j++){
if(mediageral[j]<=6){
printf("\nAluno %s REPROVADO\n",a[j].nome);
}else {
printf("Aluno %s APROVADO\n",a[j].nome);
}
}
system("pause");
return 0;
}