Faça um programa que leia os dados de 10 alunos (Nome, matricula, Média Final), armazenando em um vetor. Uma vez lidos os dados, divida estes dados em 2 novos vetores, o vetor dos aprovados e o vetor dos reprovados, considerando a média mínima para a aprovação como sendo 5.0. Exibir na tela os dados do vetor de aprovados, seguido dos dados do vetor de reprovados.
Passo 1
O enunciado pede um programa que leia dados de 10 alunos (nome, matrícula e média final), armazene tudo num vetor, e depois divida em dois vetores: aprovados (média ≥ 5.0) e reprovados (média < 5.0). Vamos usar a linguagem C e aproveitar structs para agrupar os dados.
Passo 2
Primeiro, definimos uma struct chamada Aluno com três campos: nome (string), matricula (int) e media (float). Também criamos três vetores de tamanho 10: um para todos os alunos, um para aprovados e um para reprovados. Além disso, teremos contadores separados para aprovados e reprovados.
Passo 3
Depois, fazemos um laço que vai de 0 a 9 para ler os dados dos 10 alunos. Em cada iteração, pedimos ao usuário o nome, a matrícula e a média final, e armazenamos no vetor principal.
Passo 4
Em seguida, percorremos o vetor principal e, para cada aluno, verificamos se a média é maior ou igual a 5.0. Se for, copiamos esse aluno para o vetor de aprovados e incrementamos o contador de aprovados; caso contrário, copiamos para o vetor de reprovados e incrementamos seu contador.
Passo 5
Por fim, exibimos primeiro os dados dos aprovados (percorrendo o vetor de aprovados até seu contador) e depois os dados dos reprovados (percorrendo o vetor de reprovados até seu contador).
Passo 6
O resultado final é um programa C que cumpre o que foi pedido: ler 10 alunos, separar aprovados e reprovados e imprimir cada grupo.
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
#define TOTAL_ALUNOS 10
#define TAM_NOME 50
#define TAM_NOME 50
typedef struct {
char nome[TAM_NOME];
int matricula;
float media;
} Aluno;
char nome[TAM_NOME];
int matricula;
float media;
} Aluno;
int main() {
Aluno todos[TOTAL_ALUNOS];
Aluno aprovados[TOTAL_ALUNOS];
Aluno reprovados[TOTAL_ALUNOS];
int i, cnt_aprov = 0, cnt_rep = 0;
Aluno todos[TOTAL_ALUNOS];
Aluno aprovados[TOTAL_ALUNOS];
Aluno reprovados[TOTAL_ALUNOS];
int i, cnt_aprov = 0, cnt_rep = 0;
// Leitura dos dados
for (i = 0; i < TOTAL_ALUNOS; i++) {
printf("\nAluno %d:\n", i + 1);
printf("Nome: ");
// Limpa o buffer antes de ler string
getchar();
fgets(todos[i].nome, TAM_NOME, stdin);
// Remove \n do final
todos[i].nome[strcspn(todos[i].nome, "\n")] = '\0';
printf("Matricula: ");
scanf("%d", &todos[i].matricula);
printf("Media final: ");
scanf("%f", &todos[i].media);
}
// Separação em aprovados e reprovados
for (i = 0; i < TOTAL_ALUNOS; i++) {
if (todos[i].media >= 5.0f) {
aprovados[cnt_aprov++] = todos[i];
} else {
reprovados[cnt_rep++] = todos[i];
}
}
// Exibição dos aprovados
printf("\n--- Alunos Aprovados ---\n");
for (i = 0; i < cnt_aprov; i++) {
printf("Nome: %s | Matricula: %d | Media: %.2f\n",
aprovados[i].nome,
aprovados[i].matricula,
aprovados[i].media);
}
// Exibição dos reprovados
printf("\n--- Alunos Reprovados ---\n");
for (i = 0; i < cnt_rep; i++) {
printf("Nome: %s | Matricula: %d | Media: %.2f\n",
reprovados[i].nome,
reprovados[i].matricula,
reprovados[i].media);
}
return 0;
}