Buscar

Algoritimo utilizando struct - menu 30 alunos

Prévia do material em texto

Faça um programa que defina uma lista de no maximo 30 alunos, cada um com 2 notas 
(usando struct). O programa deve ter um menu com as seguintes opções: 
- Incluir o nome e as notas de um aluno 
- Mostrar a lista de alunos em ordem alfabética, com as respectivas notas 
- Mostrar a lista de alunos em ordem decrescente de média (nome e média). 
- Sair do programa 
 
Obs: a lista pode ter qualquer número de alunos até o máximo de 30; a opção de inclusão é 
para um aluno por vez, voltando para o menu. 
 
 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define maximo_alunos 30 
 
struct TipoAluno { 
 char nome[50]; 
 float media; 
}; 
 
int main() { 
 struct TipoAluno alunos[maximo_alunos]; 
 struct TipoAluno cresc[maximo_alunos]; 
 struct TipoAluno dec[maximo_alunos]; 
 struct TipoAluno aux; 
 int x=-1,cont=0,i,j; 
 char anome[50]; 
 float n1,n2,media; 
 while(x!=4){ 
 system("cls"); 
 printf("1-Incluir Aluno\n\n2-Mostrar alunos em ordem alfabetica\n\n3-Mostrar alunos 
em ordem decrescente\n\n4-Sair"); 
 scanf("%i",&x); 
 switch(x){ 
 case 1: 
 system("cls"); 
 printf("Digite o nome do Aluno: "); 
 fflush(stdin); 
 scanf("%s",&anome); 
 printf("Digite a primeira nota: "); 
 scanf("%f",&n1); 
 printf("Digite a segunda nota: "); 
 scanf("%f",&n2); 
 if((n1>=0)&&(n2<=10)){ 
 if((n2>=0)&&(n2<=10)){ 
 media = n1+n2; 
 strcpy(alunos[cont].nome,anome); 
 alunos[cont].media = media/2; 
 cont++; 
 } 
 else{ 
 printf("\nNota Invalida"); 
 system("PAUSE"); 
 } 
 } 
 else{ 
 printf("\nNota Invalida"); 
 system("PAUSE"); 
 } 
 break; 
 case 2: 
 system("cls"); 
 for(i=0;i<cont;i++){ 
 cresc[i]=alunos[i]; 
 } 
 for(i=0;i<cont;i++){ 
 for(j=i+1;j<cont;j++){ 
 if(strcmp(cresc[i].nome,cresc[j].nome)>0){ 
 aux=cresc[i]; 
 cresc[i]=cresc[j]; 
 cresc[j]=aux; 
 } 
 } 
 } 
 for(i=0;i<cont;i++){ 
 if(cresc[i].nome!=NULL){ 
 printf("Nome: %s\nMedia: %.2f\n",cresc[i].nome,cresc[i].media); 
 } 
 } 
 system("PAUSE"); 
 break; 
 case 3: 
 system("cls"); 
 for(i=0;i<cont;i++){ 
 dec[i]=alunos[i]; 
 } 
 for(i=0;i<cont;i++){ 
 for(j=i+1;j<cont;j++){ 
 if(dec[i].media<dec[j].media){ 
 aux=dec[i]; 
 dec[i]=dec[j]; 
 dec[j]=aux; 
 } 
 } 
 } 
 for(i=0;i<cont;i++){ 
 if(dec[i].nome!=NULL){ 
 printf("Nome: %s\nMedia: %.2f\n",dec[i].nome,dec[i].media); 
 } 
 } 
 system("PAUSE"); 
 break; 
 case 4: 
 exit(0); 
 } 
 } 
 system("PAUSE"); 
}

Continue navegando