Faça um programa que em C que leia os dados de 10 alunos (Nome, matricula, Média Final), armazenando em um vector. Uma vez lidos os dados, divida estes dados em 2 novos vectores, o vector dos aprovados e o vector dos reprovados, considerando a média mínima para a aprovação como sendo 5.0. Exibir na tela os dados do vector de aprovados, seguido dos dados do vector de reprovados.
Soluções para a tarefa
Resposta:
Eu iniciei aqui, mas precisa testar algumas coisas , eu acho que está quase pronto, se você não conseguir terminar eu tento editar depois, espero que essa base te ajude nos seus estudos.
Explicação:
#include <stdio.h>
#include <string.h>
typedef struct ALUNOS{
char nome[30];
int matricula;
float media_final;
}alunos;
void Organiza(alunos *aluno);
int Contador(alunos *aluno);
int main(){
alunos novo_aluno[10];
int x;
for(x=0;x<10;x++){
printf("Insira o nome do aluno:\n");
scanf("%s",&novo_aluno[x].nome);
printf("Insira a matricula:\n");
scanf("%d",&novo_aluno[x].matricula);
printf("Insira a media final:\n");
scanf("%f",&novo_aluno[x].media_final);
}
Organiza(novo_aluno);
return 0;
}
void Organiza(alunos *aluno){
int x,y,a,r;
if(Contador(aluno) > 0){
a = Contador(aluno);
r = 10 - Contador(aluno);
}
alunos aprovados[a];
alunos reprovados[r];
for(x=0;x<10;x++){
if(aluno[x].media_final >= 5.0){
aprovados[x].media_final = aluno[x].media_final;
}else{
reprovados[x].media_final = aluno[x].media_final;
}
}
for(y=0;y<a;y++){
printf("Aprovados : Nome=> %s Matricula=> %d Media Final=> %.2f\n\n",aprovados[y].nome,aprovados[y].matricula,aprovados[y].media_final);
}
for(y=0;y<r;y++){
printf("Reprovados: Nome=> %s Matricula=> %d Media Final=> %.2f\n",reprovados[y].nome,reprovados[y].matricula,reprovados[y].media_final);
}
}
int Contador(alunos *aluno){
int num = 0;
int x;
for(x=0;x<10;x++){
if(aluno[x].media_final >= 5.0){
num++;
}
}
return num;
}