Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida


evillas

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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);
}

Editado por athoslive
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...