Ripper 0 Denunciar post Postado Agosto 31, 2009 Bom pessoal tava tentando fazer um programa para este problema: Faça um programa em C que leia o peso (ex: 50Kg) e a altura (em metros: 1,65m) de uma pessoa. Em seguida calcule o IMC (IMC = peso/altura2) e, de acordo com a tabela abaixo, indique qual a sua situação da pessoa. (2,0 pontos) IMC < 20 Abaixo do peso ideal 20 ≤ IMC < 25 Peso normal 25 ≤ IMC < 30 Acima do peso ideal IMC ≥ 30 Obeso e fiz o seguinte : #include <stdio.h> #include <stdlib.h> int main () { int x; float y,imc; printf("Digite seu peso: "); scanf("%d", &x); printf("Digite sua altura: "); scanf("%f", &y); imc=(x/(y*y)); printf("\nSeu imc e: %f\n",imc); if (imc < 20) printf("Voce esta abaixo do peso ideal\n"); if (20 <= imc < 25) printf("Voce esta com o peso ideal\n"); if (25 <= imc < 30) printf("Voce esta acima do peso ideal\n"); else if (imc >= 30) printf("Voce esta obeso"); system("Pause"); return(0); }O problema é que se digito peso=100 e altura=1.7 o programa retorna: 'você esta com peso ideal' e 'você esta acima do peso ideal', ao invés de 'você esta obeso'. O que há de errado? Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Léo Unicap 0 Denunciar post Postado Agosto 31, 2009 Cara, ao meu ver, o seu a logica do seu código está correta. O problema aparece quando você vai multiplicar Peso x Altura. Você terá que converter a Altura e o Peso para que fiquem nas mesmas unidades proporcionais. Ex.: kg | hg | dag | g | dg | cg | mg km | hm | dam | m | dm | cm | mm Esse arquivo em pdf vai te ajudar com isso Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Agosto 31, 2009 Bom pode até ser, mas o problema principal é que se o imc der 23 ,por exemplo, a resposta sai 'voce esta com o peso ideal' e 'voce esta acima do peso ideal' ao mesmo tempo e era pra sair só 'voce esta com o peso ideal'. O programa (Dev-c++) parece que não reconhece 25<=imc no terceiro if, ele interpreta como se fosse menor que 25(certo) e menor que 30 ao mesmo tempo ( errado pois tem 25<=imc). Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Agosto 31, 2009 Não use system("pause"). http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/ Teu problema é muito claro: if (25 <= IMC < 30) ..... Em C, não existe isso!A única linguagem que eu conheço e que entende esse tipo de comparação é python. mude para: if (25 <= IMC && IMC < 30) .... E para já, da pra dar uma otimizada nesse código. if (a) ....; if (B) ....; ic (c) ....; //O teu computadro executará as três comparações. // Podemos poupar ele fazendo: if (a) .....; else if (B) ....; else if (c) ....; //dessa forma, se entrarmos logo no "a", não vamos precisar checar por "b" nem por "c". http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Agosto 31, 2009 Não use system("pause"). http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/ Teu problema é muito claro: if (25 <= IMC < 30) ..... Em C, não existe isso!A única linguagem que eu conheço e que entende esse tipo de comparação é python. mude para: if (25 <= IMC && IMC < 30) .... E para já, da pra dar uma otimizada nesse código. if (a) ....; if (B) ....; ic (c) ....; //O teu computadro executará as três comparações. // Podemos poupar ele fazendo: if (a) .....; else if (B) ....; else if (c) ....; //dessa forma, se entrarmos logo no "a", não vamos precisar checar por "b" nem por "c". http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu mesmo victor. Tava com esse mesmo problema em outros programas. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Agosto 31, 2009 =D ainda bem que funcionou! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites