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

(Resolvido) 2º maior nota


jhonantan_soad

Pergunta

Como faço para obter a segunda maior nota q o usuario digitar?

eu fiz essa parte do codigo mais não ta dando certo.

while (notas >= 0)
    {
          do
          {
             printf("Digite o nome do aluno:\n");
             gets(nome);    
             printf("Quando tiver acabado de digitar as notas digite um numero negativo.\n\nDigite a nota do aluno\n");
             scanf("%f%*c",notas);
             if (maior1<=notas)
             {
                 maior1=notas;
                 }
             if ((maior2<=notas)&&(notas!=maior1))
             {
                 maior2=notas;
                 }
                 }while(notas>=0);
          x++;
    }

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Dica: Ao invés de gets prefira fgets.

Existem várias formas de se fazer isso. A melhor provavelmente seria ordenar as notas de forma crescente (ou decrescente, tanto faz).

Assim seria possível obter facilmente qualquer posição entre as notas.

A outra, mais específica, é percorrer os dados e armazenar a primeira e segunda maior nota em um array:

int a;
  float maiores[2];
  maiores[0]=0;
  maiores[1]=0;
  for(a=0;a<alunos_qtd;a++){
      if(notas[a]>maiores[0]){
          maiores[1]=maiores[0];
          maiores[0]=notas[a];
      }else if(notas[a]>maiores[1]){
          maiores[1]=notas[a];
      }
  }
  printf("A segunda maior e: %f",maiores[1]);

Link para o comentário
Compartilhar em outros sites

  • 0

Mas como está seu código completo ?

você não está utilizando array's para armazenar as notas ?

Edit:

Agora entendi... Você vai ir solicitando as notas e verificando qual a maior nesse momento. Não precisará guardar as notas para depois.

Nesse caso, faça assim:

float nota_atual;
  float primeira_maior=0,segunda_maior=0;
  printf("Digite um numero negativo quando terminar de inserir as notas\n");
  while(1){
      //Pega a nota
      printf("Nota: ");
      scanf("%f",&nota_atual);
      //Verifica se é positiva
      if(nota_atual<0){
          break;
      }
      if(nota_atual>primeira_maior){
          segunda_maior=primeira_maior;
          primeira_maior=nota_atual;
      }else if(nota_atual>segunda_maior){
          segunda_maior=nota_atual;
      }
  }
  printf("A segunda maior nota e: %f",segunda_maior);

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...