Ir ao conteúdo

Posts recomendados

Postado

oi, eu estou aprendendo C, estou bem no começo dos estudos e criei esse codigo pra calcular o imc, porém não consigo fazer exibir na tela as mensagens "Sobrepeso, obesidade grau 1, obesidade grau 2 e obesidade grau 3" Por mais que o imc corresponda as condições que eu coloquei em cada estrutura, o programa só imprime as mensagens " abaixo do peso e peso normal"

 

o que posso fazer pra funcionar certinho ?:

 

 

 

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

int main()
{
    float altura, peso, multi_altura, divi_peso, resultado;
    printf("Informe sua altura:");
    scanf("%f", &altura);
    printf("Informe seu peso:");
    scanf("%f", &peso);

    multi_altura = altura * altura;
    divi_peso = peso / multi_altura;
    resultado = divi_peso;

    if(resultado <=18.50)
    {
        printf("\nAbaixo do peso, seu imc e: %f",resultado);
    }
    else
    {
        if(resultado >=18.5 <=24.9)
        {
            printf("Peso normal, seu imc e: %f", resultado);
        }
        else
        {
            if(resultado >=25 <=29.9)
            {
                printf("Sobrepeso, seu imc e: %f", resultado);
            }
            else
            {
                if(resultado >=30 <= 34.9)
                {
                    printf("Obesidade Grau 1, seu imc e: %f",resultado);
                }
                else
                {
                    if(resultado >=35 <=39.9)
                    {
                        printf("Obesidade grau 2, seu imc e: %f", resultado);
                    }
                    else
                    {
                        if(resultado <40)
                        {
                            printf("Obesidade grau 3, seu imc e: %f", resultado);
                        }

                    }

                }

            }


        }

    }


return 0;
}


 

  • Curtir 2
Postado

@Kallif Abdon Abrahao

42 minutos atrás, Kallif Abdon Abrahao disse:

oi, eu estou aprendendo C, estou bem no começo dos estudos e criei esse codigo pra calcular o imc

Dicas:

Quando precisar apresentar códigos em suas postagens, use essa ferramenta aqui:

image.png.54fbeb24525902f542e9eb86665b8481.png

Facilita a visualização aqui no tópico.

Use a biblioteca locale.h e digite isso no início do main:

setlocale(LC_ALL, "Portuguese");

Isso te permite imprimir acentuação.

Erros:

Dentro dos if's(), você colocou, por exemplo:

resultado >=18.5 <=24.9

Isso está errado. A condição nesse caso é para se resultado >= 18.5 e resultado <= 24.9, mas convenhamos que ser <= 24.9 é o mesmo que ser < 25:

resultado >= 18.5 && resultado < 25

&& representa "e" (and), e || representa "ou" (or).

E perceba que na primeira condição, e na segunda, ambas se cumprem caso resultado seja = 18.5, isso é um erro também.

Perceba também que você foi colocando uma condição dentro da outra, poderia simplesmente colocar lá um else if() e fechar as chaves logo depois do printf().

Perceba que a última condição se cumpre caso resultado < 40, deveria ser caso resultado >= 40, e não precisa de um if() para isso. Caso nenhuma das condições anteriores se cumpra, só restará uma: resultado >= 40.

Você usou mais variáveis do que precisava, poderia excluir divi_peso, já que este é o resultado, e substituí-lo pelo resultado em si. multi_altura também é desnecessária, já que ela é o quadrado da altura, faça:

altura *= altura;

Que equivale a:

altura = altura * altura;

Mas é uma maneira mais simplificada de representar.

Teste isso:

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    float altura, peso, resultado;
    printf("Informe sua altura: ");
    scanf("%f", &altura);
    printf("Informe seu peso: ");
    scanf("%f", &peso);

    altura *= altura;
    resultado = peso / altura;

    if(resultado < 18.5)
    {
        printf("\nAbaixo do peso, seu imc é: %.2f", resultado);
    } else if(resultado >= 18.5 && resultado < 25)
    {
        printf("\nPeso normal, seu imc é: %.2f", resultado);
    } else if(resultado >= 25 && resultado < 30)
    {
        printf("\nSobrepeso, seu imc é: %.2f", resultado);
    } else if(resultado >= 30 && resultado < 35)
    {
        printf("\nObesidade Grau 1, seu imc é: %.2f", resultado);
    } else if(resultado >=35 && resultado < 40)
    {
        printf("\nObesidade grau 2, seu imc é: %.2f", resultado);
    } else
    {
        printf("\nObesidade grau 3, seu imc é: %.2f", resultado);
    }

    return 0;
}

 

  • Curtir 2
  • Obrigado 2
Postado

ACtC-3fVC08WJ0h-_6UqYY4gxgFQWK1Ft-1qnD82

 

Nomeamos a variável resultado de imc, pois é o nome mais descritivo.

resultado como nome dessa variável é muito genérico.

Existe então: imc = peso / (altura * altura)

 

 

 

ACtC-3dyjIcKBxLnP6cENFjOD3wl-9ZlaW7loXFi

Sugestão de Apresentação

ACtC-3fjuYxO6tXgmSRuMtFjpVBussJnRU1d7M3K

ACtC-3c2bEk9zqIAHSoBy1KQLmBW2VlwaMhY03An

 

 

  • Curtir 3
  • Obrigado 1
Postado
12 horas atrás, Lucca Rodrigues disse:

@Kallif Abdon Abrahao

Dicas:

Quando precisar apresentar códigos em suas postagens, use essa ferramenta aqui:

image.png.54fbeb24525902f542e9eb86665b8481.png

Facilita a visualização aqui no tópico.

Use a biblioteca locale.h e digite isso no início do main:


setlocale(LC_ALL, "Portuguese");

Isso te permite imprimir acentuação.

Erros:

Dentro dos if's(), você colocou, por exemplo:


resultado >=18.5 <=24.9

Isso está errado. A condição nesse caso é para se resultado >= 18.5 e resultado <= 24.9, mas convenhamos que ser <= 24.9 é o mesmo que ser < 25:


resultado >= 18.5 && resultado < 25

&& representa "e" (and), e || representa "ou" (or).

E perceba que na primeira condição, e na segunda, ambas se cumprem caso resultado seja = 18.5, isso é um erro também.

Perceba também que você foi colocando uma condição dentro da outra, poderia simplesmente colocar lá um else if() e fechar as chaves logo depois do printf().

Perceba que a última condição se cumpre caso resultado < 40, deveria ser caso resultado >= 40, e não precisa de um if() para isso. Caso nenhuma das condições anteriores se cumpra, só restará uma: resultado >= 40.

Você usou mais variáveis do que precisava, poderia excluir divi_peso, já que este é o resultado, e substituí-lo pelo resultado em si. multi_altura também é desnecessária, já que ela é o quadrado da altura, faça:


altura *= altura;

Que equivale a:


altura = altura * altura;

Mas é uma maneira mais simplificada de representar.

Teste isso:


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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    float altura, peso, resultado;
    printf("Informe sua altura: ");
    scanf("%f", &altura);
    printf("Informe seu peso: ");
    scanf("%f", &peso);

    altura *= altura;
    resultado = peso / altura;

    if(resultado < 18.5)
    {
        printf("\nAbaixo do peso, seu imc é: %.2f", resultado);
    } else if(resultado >= 18.5 && resultado < 25)
    {
        printf("\nPeso normal, seu imc é: %.2f", resultado);
    } else if(resultado >= 25 && resultado < 30)
    {
        printf("\nSobrepeso, seu imc é: %.2f", resultado);
    } else if(resultado >= 30 && resultado < 35)
    {
        printf("\nObesidade Grau 1, seu imc é: %.2f", resultado);
    } else if(resultado >=35 && resultado < 40)
    {
        printf("\nObesidade grau 2, seu imc é: %.2f", resultado);
    } else
    {
        printf("\nObesidade grau 3, seu imc é: %.2f", resultado);
    }

    return 0;
}

 

Obrigado amigo, sua explicação foi ótima, consegui entender tudo. Valeu mesmo 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!