Crie uma estrutura representando os alunos de um determinado curso. 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.
© 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.
(a) Permita ao usuário entrar com os dados de 5 alunos.
(b) Encontre o aluno com maior nota da primeira prova.
© 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.
Passo 1
O exercício pede pra gente criar um tipo (struct) que represente cada aluno, armazenar 5 desses alunos, e depois realizar algumas buscas e classificações sobre as notas.
Passo 2
Primeiro, a gente define uma struct em C chamada Aluno, que tem os campos matrícula (int), nome (string) e três notas (float).
Depois, declaramos um array com 5 elementos desse tipo Aluno, pra guardar os dados de 5 alunos.
Em seguida, usamos um loop for de 0 a 4 para ler da entrada padrão a matrícula, o nome e as três notas de cada aluno.
Depois, declaramos um array com 5 elementos desse tipo Aluno, pra guardar os dados de 5 alunos.
Em seguida, usamos um loop for de 0 a 4 para ler da entrada padrão a matrícula, o nome e as três notas de cada aluno.
Passo 3
Para encontrar o aluno com maior nota na primeira prova, fazemos outro loop for que compara a nota1 de cada aluno com uma variável que guarda a maior nota até então. Quando encontramos uma nota maior, atualizamos essa variável e guardamos o índice desse aluno.
Para achar o aluno com maior e o com menor média geral, primeiro dentro do mesmo ou em outro loop calculamos a média de cada aluno como (n1 + n2 + n3)/3. Em seguida comparamos com as variáveis de maior e menor média guardadas até o momento e atualizamos o índice correspondente.
Para achar o aluno com maior e o com menor média geral, primeiro dentro do mesmo ou em outro loop calculamos a média de cada aluno como (n1 + n2 + n3)/3. Em seguida comparamos com as variáveis de maior e menor média guardadas até o momento e atualizamos o índice correspondente.
Passo 4
Para checar aprovação ou reprovação, bastar percorrer novamente o array e, para cada aluno, comparar sua média com 6.0: se for maior ou igual, ele está aprovado; caso contrário, reprovado.
Passo 5
Por fim, imprimimos na tela: o aluno com maior nota na primeira prova, o aluno com maior média, o aluno com menor média e, para cada um dos 5 alunos, seu nome, sua matrícula e se foi aprovado ou reprovado.
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
#define NUM_ALUNOS 5
typedef struct {
int matricula;
char nome[50];
float n1;
float n2;
float n3;
} Aluno;
int matricula;
char nome[50];
float n1;
float n2;
float n3;
} Aluno;
int main() {
Aluno alunos[NUM_ALUNOS];
int i;
Aluno alunos[NUM_ALUNOS];
int i;
// (a) Leitura dos 5 alunos
for (i = 0; i < NUM_ALUNOS; i++) {
printf("Aluno %d:\n", i + 1);
printf(" Matrícula: ");
scanf("%d", &alunos[i].matricula);
getchar(); // limpa o '\n' remanescente
printf(" Nome: ");
fgets(alunos[i].nome, sizeof(alunos[i].nome), stdin);
// remove '\n' no final do nome
alunos[i].nome[strcspn(alunos[i].nome, "\n")] = '\0';
printf(" Nota 1: ");
scanf("%f", &alunos[i].n1);
printf(" Nota 2: ");
scanf("%f", &alunos[i].n2);
printf(" Nota 3: ");
scanf("%f", &alunos[i].n3);
printf("\n");
}
// (b) Maior nota da primeira prova
int idx_maior_n1 = 0;
float maior_n1 = alunos[0].n1;
for (i = 1; i < NUM_ALUNOS; i++) {
if (alunos[i].n1 > maior_n1) {
maior_n1 = alunos[i].n1;
idx_maior_n1 = i;
}
}
// (c) Maior média geral
int idx_maior_media = 0;
// (d) Menor média geral
int idx_menor_media = 0;
float media;
float maior_media = (alunos[0].n1 + alunos[0].n2 + alunos[0].n3) / 3.0f;
float menor_media = maior_media;
for (i = 1; i < NUM_ALUNOS; i++) {
media = (alunos[i].n1 + alunos[i].n2 + alunos[i].n3) / 3.0f;
if (media > maior_media) {
maior_media = media;
idx_maior_media = i;
}
if (media < menor_media) {
menor_media = media;
idx_menor_media = i;
}
}
// Saída dos resultados
printf("Aluno com maior nota na primeira prova:\n");
printf(" Matrícula: %d, Nome: %s, Nota1: %.2f\n\n",
alunos[idx_maior_n1].matricula,
alunos[idx_maior_n1].nome,
alunos[idx_maior_n1].n1);
printf("Aluno com maior média geral (%.2f):\n", maior_media);
printf(" Matrícula: %d, Nome: %s\n\n",
alunos[idx_maior_media].matricula,
alunos[idx_maior_media].nome);
printf("Aluno com menor média geral (%.2f):\n", menor_media);
printf(" Matrícula: %d, Nome: %s\n\n",
alunos[idx_menor_media].matricula,
alunos[idx_menor_media].nome);
// (e) Situação de cada aluno
printf("Situação dos alunos:\n");
for (i = 0; i < NUM_ALUNOS; i++) {
media = (alunos[i].n1 + alunos[i].n2 + alunos[i].n3) / 3.0f;
printf(" %s (Matrícula %d): média = %.2f -> %s\n",
alunos[i].nome,
alunos[i].matricula,
media,
(media >= 6.0f) ? "APROVADO" : "REPROVADO");
}
return 0;
}