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>
#define TOTAL_ALUNOS 10
#define TAM_NOME 50
typedef struct {
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;
// 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;
}

Exercícios relacionados