Ir ao conteúdo
  • Cadastre-se
fjd

[Resolvido] Ajuda urgente

Recommended Posts

tenho o seguinte programa

#include <stdlib.h>

#include <stdio.h>

main()

{

float lado1,lado2,lado3;

printf("Digite um valor para o primeiro lado do triangulo: ");

scanf("%f",&lado1);

printf("Digite um valor para o segundo lado do triangulo: ");

scanf("%f",&lado2);

printf("Digite um valor para o terceiro lado do triangulo: ");

scanf("%f",&lado3);

if(lado1<lado2+lado3)

printf("\nPode ser classificado um triangulo\n");

else

printf("\nNao pode ser classificado triangulo\n");

if(lado1==lado2 && lado2==lado3)

printf("Triangulo Equilatero\n\n");

else

if(lado1==lado2 && lado2!=lado3)

printf("Triangulo Isosceles\n\n");

else

if(lado2==lado3 && lado3!=lado1)

printf("Triangulo Isosceles\n\n");

else

if(lado1==lado3 && lado1!=lado2)

printf("Triangulo Isosceles\n\n");

else

if (lado1!=lado2 && lado2!=lado3)

printf("Triangulo Escaleno\n\n");

system("PAUSE");

}

quando os lados não são classificados como triangulo

ele aparece Nao pode ser classificado triangulo

mas soma igual e aparece que triangulo é

testem tipo lado1=25, lado2=10, lado3=11

ele aparece

"Não Pode ser classificado um triangulo"

"Triangulo Escaleno"

o que esta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso você poderia mudar o nome do lado1 para base e deixar lado1 e lado2, e, aparece como escaleno porque os lados são diferentes mesmo. Mude a condição ou a estrutura dos ifs, dá pra melhorar usando case.

Isso

if(lado1==lado2 && lado2==lado3)

printf("Triangulo Equilatero\n\n");

else

if(lado1==lado2 && lado2!=lado3)

printf("Triangulo Isosceles\n\n");

else

if(lado2==lado3 && lado3!=lado1)

printf("Triangulo Isosceles\n\n");

else

if(lado1==lado3 && lado1!=lado2)

printf("Triangulo Isosceles\n\n");

else

if (lado1!=lado2 && lado2!=lado3)

printf("Triangulo Escaleno\n\n");

colocaria dentro desse if

if(lado1<lado2+lado3)

printf("\nPode ser classificado um triangulo\n");

Acho que daria certo, assim, se não for triângulo já sai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

n entendi?

é que não posso usa case

muda ai o if como tu falo n entendi muito bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim

acho q tu n entendeu a duvida

mesmo o programa acusando q n é triangulo ele soma

e mostra que triangulo é tanto faz c os valores forem d escaleno ou isoceles

o problema é que tinha q pula direto pro fim apos a mensagem de q não é triangulo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você programou não, pois todos os ifs vão ser verificados.

Ficaria assim do modo como disse:

#include <stdlib.h>

#include <stdio.h>

main()

{

float lado1,lado2,base;

printf("Digite um valor para a base do triangulo: ");

scanf("%f",&base);

printf("Digite um valor para o primeiro lado do triangulo: ");

scanf("%f",&lado1);

printf("Digite um valor para o segundo lado do triangulo: ");

scanf("%f",&lado2);

if(base<lado2+lado1) {

printf("\nPode ser classificado um triangulo\n");

if(lado1==lado2 && lado2==base)

printf("Triangulo Equilatero\n\n");

if(lado1==lado2 && lado2!=base)

printf("Triangulo Isosceles\n\n");

if (lado1!=lado2 && lado2!=base)

printf("Triangulo Escaleno\n\n");

}

else

printf("\nNao pode ser classificado triangulo\n");

}

O case seria para substituir uns ifs, mas, deixa pra lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×