BergWar 0 Denunciar post Postado Novembro 7, 2013 preciso criar um algoritimo que leia 3 numeros e imprima na tela o "segundo maior" numero tentei fazer mas minha logica esta dando erro alguem pode me ajuda? olhe minha logica: #include <stdio.h> #include <stdlib.h> int main () { float a,b,c,r; printf("\ninforme a pontuação do 1º atleta: "); scanf ("%d",&a); printf("\ninforme a pontuação do 2º atleta: "); scanf ("%d",&b); printf("\ninforme a pontuação do 3º atleta: "); scanf ("%d",&c); if (a>b) { if (a<c) { r = a; printf("\npontuacao do segundo colocado: %d",r); } } if (b>c) { if (b<a) { r = b; printf("\npontuacao do segundo colocado: %d",r); } } if (c>a) { if (c<b) { r = c; printf("\npontuacao do segundo colocado: %d",r); } } system ("Pause>null"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Novembro 8, 2013 Encontrei dois problemas. 1) Você precisa decidir com qual tipo de dado vai trabalhar. Você declara as variáveis como float, mas nas funções scanf e printf utiliza inteiros. Por isso está armazenando algo completamente diferente do que foi digitado. 2) Sua lógica no if está incorreta. Cada if deve contemplar todas as possibilidades. Por exemplo: if((a < b && a > c)||(a > b && a < c)) // a é segundo maior Essa é apenas UMA das formas que ser implementado. Existem muitas outras. Dica: Utilize nomes de variáveis que tenham relação com a função da variável. Por que ao invés de utilizar a, b e c não utiliza pontAtleta1, pontAtleta2 e pontAtleta3. Em um programa pequeno não há prolema. Mas suponha que tenha um sistema com vários arquivos fonte, e cada um deles tem uma variável a, uma b e uma c. Vai ser bem complicado de fazer manutenção neste código... Compartilhar este post Link para o post Compartilhar em outros sites