Jump to content
Fórum Script Brasil
  • 0

Duvida


evillas
 Share

Question

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

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Eu não entendo de structs,porem com o pouco conhecimento em matrix que eu tenho,para voce cadastrar as notas e alunos eu usaria:

for(i=0;i<=20;i++)
{
      printf("Digite seu nome:");
      scanf("%s",&nome[i]);
      printf("Agora digite sua nota:");
      scanf("%d",&nota[i]);
      printf("presisa cadastrar mais nomes/notas ?  ");
      scanf("%s",&exit);
      if(exit==sim)

Link to comment
Share on other sites

  • 0

Eu não entendo de structs,porem com o pouco conhecimento em matrix que eu tenho,para voce cadastrar as notas e alunos eu usaria:

for(i=0;i<=20;i++)
{
      printf("Digite seu nome:");
      scanf("%s",&nome[i]);
      printf("Agora digite sua nota:");
      scanf("%d",&nota[i]);
      printf("presisa cadastrar mais nomes/notas ?  ");
      scanf("%s",&exit);
      if(exit==sim)
          exit(1);
}

Edited by athoslive
Link to comment
Share on other sites

  • 0

#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;

}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...