3
respostas

imc calculo errado

#include <stdio.h>
#include <stdlib.h>

int main () {
    float peso, altura;

    printf("Qual seu peso?\n");
    scanf("%f", &peso);

    printf("Qual sua altura?\n");
    scanf("%f", &altura);

    double imc = peso / (altura * altura);

    if (imc < 26){
            printf("O seu Idice de Massa Corporea e %.2f e esta Normal\n", imc );
            }

        else if (imc >=26 && 30){
           printf ("O seu Indice de Massa Corporea e %.2f e voce esta Obeso\n", imc);
           }

        else if (imc >=30){
           printf("O seu Indice de Massa Corporea e %.2f e voce esta com Obesidade Morbida\n", imc);
           }
}

Estou usando como exemplo minhas características: peso = 60 altura = 1,70

O resultado era pra ser 20,76(peso normal). Porém está vindo como 60,00 e resulta obesidade.

3 respostas

quando for informar a altura = 1,70 não use "," sim ".". altura = 1.70

Siga a orientação que já foi proposta de usar o . como separador decimal ou configure a localização para português do Brasil o que pode ser feito com as seguintes modificações:

#include <stdio.h>
#include <stdlib.h>

Passa a ser

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

E a primeira linha após o main: (recomendação - qualquer posição antes dos inputs (scanf) funciona)

int main () {
    float peso, altura;

Passa a ser:

int main () {
    setlocale(LC_ALL, "Portuguese");
    float peso, altura;

Recomendação de leitura: http://linguagemc.com.br/localizacao-de-programas-com-locale-h/

Obrigado!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software