Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Imc em Pascal.


guitar_brasil

Pergunta

Uses Crt;
Var ALTURA, PESO, MASSA : Real;

Begin
  Writeln('Qual a sua altura?');
  Readln(ALTURA);
  Writeln('E o peso?');
  Readln(PESO);
  MASSA := ALTURA * 2 / PESO;
  If  MASSA < 26  then
    Writeln('Normal.')
    Else
    If (MASSA > 26) and (MASSA <= 30) then
      Writeln('Obeso.')
      Else
        If  MASSA >= 30  Then
        Writeln('Obeso Mórbido.')
End.

Qualquer altura e peso que eu entre quando executo o programa retorna sempre "normal".

O código está com algum erro de lógica?

Ou o que está errado?

Edit: O erro era na linha 9 que tinha que ser ALTURA * ALTURA em

vêz de altura * 2.

Edit: Mas assim retorna sempre "obeso mórbido". :(

Editado por guitar_brasil
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Algumas informações adicionais:

Cálculo do IMC

Para fazer o cálculo do IMC basta dividir seu peso em quilogramas pela altura ao quadrado (em metros). O número que será gerado deve ser comparado aos valores da tabela IMC para se saber se você está abaixo, em seu peso ideal ou acima do peso.

Por exemplo, se você pesa 60Kg e mede 1,67m, você deve utilizar a seguinte fórmula para calcular o IMC:

IMC = 60 ÷ 1,67²

IMC = 60 ÷ 2,78

IMC = 21,5

Quer evitar este monte de cálculos? Então utilize nossa página de cálculo de IMC online! Nela, basta informar seu peso e sua altura que seu IMC será mostrado imediatamente.

Mas Afinal O Que é IMC

IMC é sigla de Índice de Massa Corpórea, uma medida para se determinar se uma pessoa está abaixo, em seu peso ideal, ou acima do peso.

Tabela IMC

Cálculo IMC Situação

Abaixo de 18,5 Você está abaixo do peso ideal

Entre 18,5 e 24,9 Parabéns — você está em seu peso normal!

Entre 25,0 e 29,9 Você está acima de seu peso (sobrepeso)

Entre 30,0 e 34,9 Obesidade grau I

Entre 35,0 e 39,9 Obesidade grau II

40,0 e acima Obesidade grau III

como fica no seu codigo

Uses Crt;
Var ALTURA, PESO, MASSA : Real;

Begin
  Writeln('Qual a sua altura?');
  Readln(ALTURA);
  Writeln('E o peso?');
  Readln(PESO);
  MASSA := PESO / ALTURA * ALTURA;
  If  MASSA < 24.9  then
    Writeln('Normal.')
    Else
    If (MASSA => 25) and (MASSA <= 29.9) then
      Writeln('Você está acima de seu peso (sobrepeso).')
      Else
        If (MASSA => 30) and (MASSA <= 34.9) then
        Writeln(Obesidade grau I.')
      Else
        If (MASSA => 35) and (MASSA <= 39.9) then
        Writeln(Obesidade grau II.')
      Else
        If (MASSA => 40)  then
        Writeln(Obesidade grau III.')
End.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

toda vez que quiser fazer uma operação antes de outra, seja ela de logica ou não você tem que usar o parênteses()

assim quando você quiser executar um and, com um or ou uma soma antes da multiplicação serve assim

if a = 2 and ( 2 > b or 2 = c)

ele verifica primeiro o parenteses

4 / 2 *2 = 4

agora

4 / (2 * 2) = 1

entendeu a diferença?

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi sim raphael_suporte :)

Algo que eu estava errando é que a entrada da altura (durante a execução do programa) devia ser com ponto. Ex:1.76. E eu entrava 176 :D

Em todo caso aí está o código "que funciona".

Program IMC;

Uses Crt;
Var ALTURA, PESO, MASSA : Real;

Begin
  Writeln('Qual a sua altura?');
  Readln(ALTURA);
  Writeln('E o peso?');
  Readln(PESO);
  MASSA := PESO / (ALTURA * ALTURA);
  If  (MASSA < 24.9) then
    Writeln('Normal.')
    Else
    If ((MASSA > 25) and (MASSA <= 39.9)) Then
      Writeln('Obeso.')
      Else
        If  (MASSA >= 30) then
        Writeln('Obeso Mórbido.')
End.

Link para o comentário
Compartilhar em outros sites

  • 0

sinal do maior ou igual precisa ir em ordem se não da erro (<=) lembrando que parenteses determina a ordem da resolução da eguação.

Uses Crt;
Var ALTURA, PESO, MASSA : Real;

Begin
  Writeln('Qual a sua altura?');
  Readln(ALTURA);
  Writeln('E o peso?');
  Readln(PESO);
  MASSA := PESO / (ALTURA * ALTURA);
  If  MASSA < 18.5  then
    Writeln('Você está abaixo do peso ideal.')
    Else
    If (MASSA >= 18.5 ) and (MASSA <= 24.9) then
      Writeln('Parabéns - você está em seu peso normal!')
      Else
        If (MASSA >= 25) and (MASSA <= 29.9) then
        Writeln('Você está acima de seu peso (sobrepeso)')
      Else
        If (MASSA >= 30) and (MASSA <= 34.9) then
        Writeln('Obesidade grau I.')
        else
        If (MASSA >= 35) and (MASSA <= 39.9) then
        Writeln('Obesidade grau II.')
      Else          
        If (MASSA >= 40)  then
        Writeln('Obesidade grau III.')
End.

testado

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...