Ir ao conteúdo
  • Cadastre-se

Probleminha com If e Else


BamTec
Ir à solução Resolvido por André Molinari,

Posts recomendados

Ola tenho que escrever um algoritmo deve retornar a classificação de tornados que vai de F0 até F5.

 

Para tanto utilizei de if e else, não tenho problemas na compilação, mas sempre que rodo o programa para qualquer valor de vento que digito ele coloca a resposta certa seguia de "Tornado F5"....

 

O código que montei está abaixo, se alguém conseguir ver onde esta o erro agradeço.....

 

#include <stdio.h>
 
int main()
{
float velven;
 
printf("Digite a velocidade dos ventos: ");
scanf("%f", &velven);
if (velven<117)
{printf("Tornado F0");
}
else if (velven >= 117 && velven <= 180)
{printf("Tornardo F1");
}
else if (velven >= 181 && velven <= 252)
{printf("Tornardo F2");
}
else if (velven >= 153 && velven <= 333)
{printf("Tornardo F3");
}
else if (velven >= 334 && velven <= 419)
{printf("Tornardo F4");
}
else (velven >= 420);
{printf("Tornardo F5");
}
return 0;
}
Link para o comentário
Compartilhar em outros sites

  • Solução

Amigo, o seu problema é simples.

 

Primeiro, nunca utilize apenas if, como o amiguinho ali em cima te recomenda. A razão é simples: O programa vai testar TODOS os if's e vai deixa-lo com comparações à toa, caso o tornado seja F0.

 

Então, sua logica esta correta, sempre use else if. Todavia, o codigo está errado aqui no final:

 

"else (velven >= 420);

{printf("Tornardo F5");"
 
O comando else não precisa ter esse (velven >=420). Na verdade ele NÃO PODE TER. 
 
você pode fazer duas coisas:
 
colocar um if
tirar o velven >= 420
 
 
else if (velven >= 420);
 
OU
 
else
 
espero ter ajudado!

Amigo, o seu problema é simples.

 

Primeiro, nunca utilize apenas if, como o amiguinho ali em cima te recomenda. A razão é simples: O programa vai testar TODOS os if's e vai deixa-lo com comparações à toa, caso o tornado seja F0.

 

Então, sua logica esta correta, sempre use else if. Todavia, o codigo está errado aqui no final:

 

"else (velven >= 420);

{printf("Tornardo F5");"
 
O comando else não precisa ter esse (velven >=420). Na verdade ele NÃO PODE TER. 
 
você pode fazer duas coisas:
 
colocar um if
tirar o velven >= 420
 
 
else if (velven >= 420);
 
OU
 
else
 
espero ter ajudado!
Link para o comentário
Compartilhar em outros sites

o erro está no ultimo else, tem um ponto-virgula la...

Indentar seu código vai te poupar tempo, e evitar que isso aconteça e passe despercebido...

 

#include <stdio.h>int main() {    float velven;    printf("Digite a velocidade dos ventos: ");    scanf("%f", &velven);        if (velven<117)        printf("Tornado F0");    else if (velven >= 117 && velven <= 180)        printf("Tornardo F1");    else if (velven >= 181 && velven <= 252)        printf("Tornardo F2");    else if (velven >= 153 && velven <= 333)        printf("Tornardo F3");    else if (velven >= 334 && velven <= 419)        printf("Tornardo F4");    else if (velven >= 420)        printf("Tornardo F5");    system("pause");    return 0;}
Link para o comentário
Compartilhar em outros sites

 

o erro está no ultimo else, tem um ponto-virgula la...

Indentar seu código vai te poupar tempo, e evitar que isso aconteça e passe despercebido...

 

#include <stdio.h>int main() {    float velven;    printf("Digite a velocidade dos ventos: ");    scanf("%f", &velven);        if (velven<117)        printf("Tornado F0");    else if (velven >= 117 && velven <= 180)        printf("Tornardo F1");    else if (velven >= 181 && velven <= 252)        printf("Tornardo F2");    else if (velven >= 153 && velven <= 333)        printf("Tornardo F3");    else if (velven >= 334 && velven <= 419)        printf("Tornardo F4");    else if (velven >= 420)        printf("Tornardo F5");    system("pause");    return 0;}

 a indentação correta não seria

if (velven<117)        printf("Tornado F0");        else if (velven >= 117 && velven <= 180)            printf("Tornardo F1");            else if (velven >= 181 && velven <= 252)                printf("Tornardo F2");                else if (velven >= 153 && velven <= 333)                    printf("Tornardo F3");                    else if (velven >= 334 && velven <= 419)                        printf("Tornardo F4");                        else if (velven >= 420)                           printf("Tornardo F5");

Pois foi assim que aprendi na faculdade... Mas vai de gosto também né.

Link para o comentário
Compartilhar em outros sites

 a indentação correta não seria

if (velven<117)        printf("Tornado F0");        else if (velven >= 117 && velven <= 180)            printf("Tornardo F1");            else if (velven >= 181 && velven <= 252)                printf("Tornardo F2");                else if (velven >= 153 && velven <= 333)                    printf("Tornardo F3");                    else if (velven >= 334 && velven <= 419)                        printf("Tornardo F4");                        else if (velven >= 420)                           printf("Tornardo F5");

Pois foi assim que aprendi na faculdade... Mas vai de gosto também né.

Converse direito com quem lhe ensinou isso, pergunte a ele o que aconteceria se seu "if else" tivesse 300 condições.

Link para o comentário
Compartilhar em outros sites

 a indentação correta não seria

if (velven<117)        printf("Tornado F0");        else if (velven >= 117 && velven <= 180)            printf("Tornardo F1");            else if (velven >= 181 && velven <= 252)                printf("Tornardo F2");                else if (velven >= 153 && velven <= 333)                    printf("Tornardo F3");                    else if (velven >= 334 && velven <= 419)                        printf("Tornardo F4");                        else if (velven >= 420)                           printf("Tornardo F5");

Pois foi assim que aprendi na faculdade... Mas vai de gosto também né.

 

Não. A indentação "correta" é como o CiroboyBR mostrou. Digo correta principalmente pensando na legibilidade do código, além de se mais fácil de digitar (imagine a quantidade de tabulações que seriam necessárias se a condição tivesse... sei lá, umas 100 condições). Pense sempre na legibilidade do código e procure dar uma lida em boas práticas de programação.

Link para o comentário
Compartilhar em outros sites

o amiguinho aqui só tinha sugerido isso para que ele fizesse testes, já que não estava funcionando o código.

Obvio que encadeando os ifs é poupado processamento caso o primeiro if seja o correto, mas caso ele tivesse feito o que o amiguinho aqui sugeriu, o código dele teria funcionado e ele teria conseguido identificar que o erro dele estava no ultimo else como você comentou.

Não existe nada melhor do que encontrar a solução de um problema na lógica de programação, você não acha amiguinho?

Link para o comentário
Compartilhar em outros sites

o amiguinho aqui só tinha sugerido isso para que ele fizesse testes, já que não estava funcionando o código.

Obvio que encadeando os ifs é poupado processamento caso o primeiro if seja o correto, mas caso ele tivesse feito o que o amiguinho aqui sugeriu, o código dele teria funcionado e ele teria conseguido identificar que o erro dele estava no ultimo else como você comentou.

Não existe nada melhor do que encontrar a solução de um problema na lógica de programação, você não acha amiguinho?

 

Sua sugestão pra teste a sua ideia é válida sim. Mas nesse tipo de situação (com muitos  if else) eu prefiro o uso de um switch. Ficaria mais limpo o código. 

Link para o comentário
Compartilhar em outros sites

Sua sugestão pra teste a sua ideia é válida sim. Mas nesse tipo de situação (com muitos  if else) eu prefiro o uso de um switch. Ficaria mais limpo o código. 

o Problema é que o switch não aceita range, do jeito que ele precisa. 

Se não me engano o switch só aceita 1 valor por vez e não tem como testar.

Link para o comentário
Compartilhar em outros sites

 

Amigo, o seu problema é simples.

 

Primeiro, nunca utilize apenas if, como o amiguinho ali em cima te recomenda. A razão é simples: O programa vai testar TODOS os if's e vai deixa-lo com comparações à toa, caso o tornado seja F0.

 

Então, sua logica esta correta, sempre use else if. Todavia, o codigo está errado aqui no final:

 

"else (velven >= 420);

{printf("Tornardo F5");"
 
O comando else não precisa ter esse (velven >=420). Na verdade ele NÃO PODE TER. 
 
você pode fazer duas coisas:
 
colocar um if
tirar o velven >= 420
 
 
else if (velven >= 420);
 
OU
 
else
 
espero ter ajudado!

Amigo, o seu problema é simples.

 

Primeiro, nunca utilize apenas if, como o amiguinho ali em cima te recomenda. A razão é simples: O programa vai testar TODOS os if's e vai deixa-lo com comparações à toa, caso o tornado seja F0.

 

Então, sua logica esta correta, sempre use else if. Todavia, o codigo está errado aqui no final:

 

"else (velven >= 420);

{printf("Tornardo F5");"
 
O comando else não precisa ter esse (velven >=420). Na verdade ele NÃO PODE TER. 
 
você pode fazer duas coisas:
 
colocar um if
tirar o velven >= 420
 
 
else if (velven >= 420);
 
OU
 
else
 
espero ter ajudado!

 

Pois é...

 

o erro que cometi foi esse criar uma condição no ultimo ELSE.....

 

Tirando a condição funcionou certinho....

Valeu.....

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...