Ir para conteúdo
Fórum Script Brasil

evillas

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Tudo que evillas postou

  1. evillas

    Duvida

    #include <stdio.h> #include <stdlib.h> typedef struct aluno{ char nome[254+1]; float nota; }ALUNO; typedef struct No{ ALUNO dado; struct No *proximo; }celula; celula *cabeca = NULL; //PROTOTIPOS void InsereDepois(celula *elemento, ALUNO valor); //CAPTURA VARIÁVEL COM O SCANF E COM LIMPEZA DO BUFFER DE ENTRADA PADRÃO void captura(char *perg, char *scanset, void *dado) { printf(perg); scanf(scanset,dado); //é necessário esvaziar o buffer de entrada de dados porque o scanf coloca o \n no endereço e isso pode //ser utilizado como um inteiro e as opções não serão mais capturadas. while (getchar()!= '\n'){} // esvazia o buffer de entrada } void Listar(void) { int aux = 0; celula *imp = NULL; //ponteiro auxiliar para impressao aux = 1; //contador auxiliar imp = cabeca; //coloca o ponteiro auxiliar para impressao na cabeca printf("\nIND NOME%45s NOTA\n"," "," "); //cabecalho while (imp != NULL) { printf("%3d %-49s %.2f \n", aux,imp->dado.nome, imp->dado.nota); imp = imp->proximo; aux ++; } system("PAUSE"); } int menu(void) { int i = 0; printf("MENU PRINCIPAL \n"); printf("--------------\n\n"); printf("1 - Adicionar Aluno\n"); printf("2 - Mostrar maior\n"); printf("3 - Sair\n"); printf("\n"); captura("\nEntre com a opcao e digite <ENTER>:","%d",&i); return (i); } int main (void) { int num = 0; int count = 0; int aux = 0; ALUNO alunoAux; ALUNO maior; celula *p = NULL; while(1) { system("cls"); //limpa tela aux = menu(); switch(aux) { case 1:// adiciona aluno memset(&alunoAux,0,sizeof(ALUNO)); captura("\nDigite o nome do aluno:", "%254[^\n]", alunoAux.nome); captura("\nDigite a nota do aluno:", "%f", &alunoAux.nota); if (alunoAux.nota < 0.0 || alunoAux.nota > 10.0) { printf("Nota invalida !!!!!"); system("PAUSE"); break; } //se a cabeca for igual a NULL = LISTA VAZIA if (cabeca == NULL) { printf("vai inserir o primeiro..."); //cria o primeiro elemento da lista cabeca = (celula *) malloc(sizeof(celula)); cabeca->dado = alunoAux; cabeca->proximo = NULL; p = cabeca; //posiciona a cabeca no primeiro elemento } else { InsereDepois(p, alunoAux); p = p->proximo; } Listar(); break; case 2: p = cabeca; if (p == NULL) { printf("\nLista Vazia!!!!\n"); break; } maior = p->dado; while (p->proximo != NULL) { p = p->proximo; if (maior.nota <= p->dado.nota) maior = p->dado; } printf("\nMAIOR NOTA:\n"); printf("%s %f\n",maior.nome, maior.nota); break; case 3: return(0); break; default: break; } } return(0); } //insere um elemento apos outro elemento void InsereDepois(celula *elemento, ALUNO valor) { celula *novoElemento; novoElemento = (celula *) malloc(sizeof(celula)); novoElemento->dado = valor; novoElemento->proximo = elemento->proximo; elemento->proximo = novoElemento; }
  2. evillas

    Duvida

    Bom Dia A todos to com muitas duvidas para fazer este exercício passado em aula. Tenho que Construir uma aplicação, com alocação dinâmica, que armazene o nome do aluno e a nota e mostre o aluno que possui a maior nota. (menu com 2 opções: 1 adicionar; 2-maior nota) ALUNO{ caracter nome[254+1]; float nota; } Programa utilizado Dev C++ Linguagem C
×
×
  • Criar Novo...