#include <stdio.h>
#include <stdlib.h>
# define MAXIMO 5
typedef struct
{
int ra[MAXIMO];
char nome[MAXIMO][50];
}tAluno;
//le os dados dos alunos
void lerDados(tAluno *dados);
//ordena
void ordena(tAluno *dados);
void imprimir(tAluno dados);
int tam;
int main(int argc, char *argv[])
{
tAluno aluno;
int opcao;
tam=0;
printf("--------------------------------------\n\n");
printf("-----------Escolha a opcao:-----------\n\n");
printf("1- Inserir um novo registro\n");
printf("2- Listar os registros da tabela\n");
printf("3- Sair\n");
printf("--------------------------------------\n\n");
do
{
printf("Informe a opcao 1, 2 ou 3: ");
scanf("%d", &opcao);
printf("\n");
switch (opcao)
{
case 1:
if ( tam == MAXIMO){
printf("Voce ja inserio o maximo de alunos!!\n\n");
} else{
lerDados (&aluno);
ordena(&aluno);
tam = tam+1;
}
break;
case 2:
imprimir(aluno);
break;
case 3:
return(0);
default:
printf("Opcao invalida\n\n");
break;
}
}
while (opcao != 3);
system("PAUSE");
return 0;
}
void lerDados (tAluno *dados)
{
fflush(stdin);
printf(" Digite o nome do aluno: ");
gets(dados->nome[tam]);
fflush(stdin);
printf(" Digite o ra do aluno: ");
scanf("%d", &dados->ra[tam]);
printf("\n");
}
void ordena(tAluno *dados){
int aux;
int i,j;
char aux2[50];
for (i=0;i<tam;i++){
for (j=0; j < tam-i; j++){
// Caso o elemento de posição menor for maior que o elemento seguinte, realiza a troca.
if (dados->ra[j] > dados->ra[j+1]) {
aux = dados->ra[j+1];
dados->ra[j+1] = dados->ra[j];
dados->ra[j] = aux;
strcpy(aux2, dados->nome[j+1]);
strcpy( dados->nome[j+1], dados->nome[j]);
strcpy( dados->nome[j], aux2);
}
}
}
}
void imprimir(tAluno dados){
int p;
for( p=0; p<tam; p++){
printf("%s %d\n",dados.nome[p],dados.ra[p]);
}
}