setlocale(LC_ALL,"portuguese");
int P;
float H,IMC;
printf("Digite o seu peso em kilogramas: \n");
scanf("%d",&P);
printf("Digite sua altura em metros : \n");
scanf("%f",&H);
IMC=P/(H*H);
if (IMC<18.5){
printf("Seu IMC é de %.2f. Você está abaixo do peso\n",IMC);
}
else {
if (IMC<24.9){
printf("Seu IMC é de %.2f. Você está com peso normal\n",IMC);
}
else{
if(IMC<29.9){
printf("Seu IMC é de %.2f. Você está acima do peso \n",IMC);
}
else{
if(IMC<34.9){
printf("Seu IMC é de %.2f. Você está com obesidade\n",IMC);
}
else{
if(IMC<39.9){
printf("Seu IMC é de %.2f. Você está com obesidade severa\n",IMC);
}
else{
printf("Seu IMC é de %.2f. Você está com obesidade mórbida\n",IMC);
}
system("pause");
}}}} }
No entanto, quando o programa vai exibir o resultado, o cálculo sai errado, ele toma o IMC como igual ao peso, ou seja, não divide o peso pelo quadrado da altura, como o é na fórmula. Então, quando eu apago o #include<locale.h> e a função correspondente setlocale(......), o programa calcula certo. Soube que o erro está em que deveria por vírgulas nos números decimais (18,5 e não 18.5) para o português. Fiz isso e só piorou, o programa simplesmente fecha quando acionado a mostrar o resultado.
Então alguém poderia me apontar onde está o erro ??
*OBS: usando o dev c++ 4.9.9.2. No dev c++ 5.1, no meu proprio computador também não deu certo...
Pergunta
vini-300
Olá, boa tarde,
Sou bastante leigo em programação. Estava fazendo um programa que calcula o IMC (indice de massa corporal), acredito ser bem clássico este hehe.
Esta aqui, como ficou o programa :
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
main(){
setlocale(LC_ALL,"portuguese");
int P;
float H,IMC;
printf("Digite o seu peso em kilogramas: \n");
scanf("%d",&P);
printf("Digite sua altura em metros : \n");
scanf("%f",&H);
IMC=P/(H*H);
if (IMC<18.5){
printf("Seu IMC é de %.2f. Você está abaixo do peso\n",IMC);
}
else {
if (IMC<24.9){
printf("Seu IMC é de %.2f. Você está com peso normal\n",IMC);
}
else{
if(IMC<29.9){
printf("Seu IMC é de %.2f. Você está acima do peso \n",IMC);
}
else{
if(IMC<34.9){
printf("Seu IMC é de %.2f. Você está com obesidade\n",IMC);
}
else{
if(IMC<39.9){
printf("Seu IMC é de %.2f. Você está com obesidade severa\n",IMC);
}
else{
printf("Seu IMC é de %.2f. Você está com obesidade mórbida\n",IMC);
}
system("pause");
}}}} }
No entanto, quando o programa vai exibir o resultado, o cálculo sai errado, ele toma o IMC como igual ao peso, ou seja, não divide o peso pelo quadrado da altura, como o é na fórmula. Então, quando eu apago o #include<locale.h> e a função correspondente setlocale(......), o programa calcula certo. Soube que o erro está em que deveria por vírgulas nos números decimais (18,5 e não 18.5) para o português. Fiz isso e só piorou, o programa simplesmente fecha quando acionado a mostrar o resultado.
Então alguém poderia me apontar onde está o erro ??
*OBS: usando o dev c++ 4.9.9.2. No dev c++ 5.1, no meu proprio computador também não deu certo...
Agradeço o apoio !
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.