/* Autor: Carlos Henrique de Oliveira Monteiro André Contato: carloschoma@gmail.com Exercício: Prática 7 _ 1a3 Data: 2017-05-09 */ #include #include #define MAX 20 typedef struct aluno { char nome[20]; int idade; } tAluno; //a) Preencher UM registro com informações sobre um aluno. A função deve perguntar o nome e a idade. void preencherAluno(tAluno listaAlunos[], int *tamLista){ printf("Cadastro de Alunos \n"); printf("Informe o nome: "); scanf("%s", listaAlunos[*tamLista].nome); printf("Informe a idade: "); scanf("%d", &listaAlunos[*tamLista].idade); (*tamLista)++; printf("Aluno Cadastrado...\n\n"); } //b) Imprimir na tela em forma de tabela as informa¸c˜oes de todos os alunos acrescentados. void imprimirLista(tAluno listaAlunos[], int tamLista){ int i; if (tamLista!=0) { printf("Posição\tNome\tIdade\n"); for (i=0; i 0) { //faz a troca //joga tudo na auxiliar strcpy(aux.nome, listaAlunos[i].nome); aux.idade = listaAlunos[i].idade; //joga i+1 em i strcpy(listaAlunos[i].nome, listaAlunos[i+1].nome); listaAlunos[i].idade = listaAlunos[i+1].idade; //joga aux em i+1 strcpy(listaAlunos[i+1].nome, aux.nome); listaAlunos[i+1].idade = aux.idade; } } } //f) Acrescenta um aluno novo de forma ordenada na lista de alunos. //Não vale acrescentar no final e chamar a função anterior para ordenar. void preencherAlunoOrdem(tAluno listaAlunos[], int *tamLista){ int i, posicao=-1; tAluno aux; // Variável auxiliar para cadastro de aluno printf("Cadastro de Alunos \n"); printf("Informe o nome: "); scanf("%s", &aux.nome); printf("Informe a idade: "); scanf("%d", &aux.idade); i=0; while (i<*tamLista && posicao==-1) { if(strcmp(listaAlunos[i].nome, aux.nome) > 0) { posicao = i; } i++; } printf("POS %d POS \n\n",posicao); //Posicao (-1 não encontrou nada. Qualquer outro valor, empurrar todos para frente e inserir no espaço) if(posicao==-1) { strcpy(listaAlunos[*tamLista].nome, aux.nome); listaAlunos[*tamLista].idade = aux.idade; (*tamLista)++; printf("Aluno Cadastrado...\n\n"); } else { (*tamLista)++; for (i=(*tamLista); i>=posicao; i--) { //joga para frente strcpy(listaAlunos[i+1].nome, listaAlunos[i].nome); listaAlunos[i+1].idade = listaAlunos[i].idade; } //coloca na posição = posicao strcpy(listaAlunos[posicao].nome, aux.nome); listaAlunos[posicao].idade = aux.idade; printf("Aluno Cadastrado...\n\n"); } } //Qual lista usar? int qualLista(){ int lista; printf("Qual lista utilizar? "); scanf("%d",&lista); if(lista >=1 && lista <=2) { return lista; } else { return -1; } } /*programa principal*/ int main () { /*variaveis do programa principal*/ char opcao, buscaAluno[20]; tAluno listaEL1[MAX], listaEL2[MAX]; int tamLista1 = 0, tamLista2 = 0; int lista; /*menu*/ do { printf("== MENU == \n"); printf("Alunos no sistema Lista1: %d Lista2: %d\n\n", tamLista1, tamLista2); printf("a) Cadastrar aluno \n"); printf("b) Imprimir lista de alunos \n"); printf("c) Mostrar a informação de apenas um aluno, pelo nome\n"); printf("d) Ordenar a lista de alunas pelo nome \n"); printf("e) Acrescentar alunos ordenados \n"); printf("f) Sair \n"); printf("Digite uma das opcoes: "); scanf(" %c",&opcao); switch(opcao) { case 'a': /*Cadastrar aluno*/ lista = qualLista(); if(lista==1) preencherAluno(listaEL1, &tamLista1); else if (lista==2) preencherAluno(listaEL2, &tamLista2); else printf("Lista Inválida"); break; case 'b': /*Imprimir lista de alunos*/ lista = qualLista(); if(lista==1) imprimirLista(listaEL1, tamLista1); else if (lista==2) imprimirLista(listaEL2, tamLista2); else printf("Lista Inválida"); break; case 'c': /*Mostrar a informação de apenas um aluno, pelo nome*/ lista = qualLista(); if(lista==1) imprimirAluno(listaEL1, tamLista1); else if (lista==2) imprimirAluno(listaEL2, tamLista2); else printf("Lista Inválida"); break; case 'd': /* Ordenar a lista de alunas pelo nome*/ lista = qualLista(); if(lista==1) ordenaLista(listaEL1, tamLista1); else if (lista==2) ordenaLista(listaEL2, tamLista2); else printf("Lista Inválida"); break; case 'e': /*Acrescentar alunos ordenados*/ lista = qualLista(); if(lista==1) preencherAlunoOrdem(listaEL1, &tamLista1); else if (lista==2) preencherAlunoOrdem(listaEL2, &tamLista2); else printf("Lista Inválida"); break; case 'f': /*sair*/ printf("Saindo...\n\n"); break; default: printf("opcao invalida! \n\n"); break; } }while(opcao != 'f'); return 0; }