none
Ajuda com cálculo de Peso ideal

    Question

  • Elabore um programa que permita receber o peso e a altura de
    uma pessoa adulta. Quando for clicado o botão calcular o
    programa deverá exibir uma das seguintes mensagens:
    “Parabéns peso ideal”, “Engorde XXX Kg”,“Emagreça XXX Kg” de

    acordo com a tabela abaixo:

    Altura Peso Ideal
    Até 1.50 50 Kg
    De 1.50 até 1.90 70 Kg

    Acima de 1.90 100 Kg

    O código abaixo foi o que eu fiz, porém não está certo, já alterei muita coisa e nada ainda...

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                int peso = 0, altura = 0;
    
                try
                {
                    peso = Convert.ToInt32(textBox2.Text);
                    altura = Convert.ToInt32(textBox1.Text);
                }
    
                catch
                {
                    MessageBox.Show("Valor Inválido");
                    return;
                }
    
                int p1 = peso-50;
                int p2 = peso-70;
                int p3 = peso-100;
    
                if (altura < 1.50)
                {
                    if (peso == 50)
                    {
                        label4.Text = "Peso Ideal";
                    }
                    else
                        if (peso > 50)
                        {
                            label4.Text = ("Emagreça " + p1 + "Kg");
                        }
                        else
                            if (peso < 50)
                            {
                                label4.Text = ("Engorde " + p1 + "Kg");
                            }
                }
                else
                if ((altura >= 1.50) && (altura <= 1.90))
                {
                    if (peso == 70)
                    {
                        label4.Text = "Peso Ideal";
                    }
                    else
                        if (peso > 70)
                        {
                            label4.Text = ("Emagreça " + p2 + "Kg");
                        }
                        else
                            if (peso < 70)
                            {
                                label4.Text = ("Engorde " + p2 + "Kg");
                            }
                }
                else
                if (altura > 1.90)
                {
                    if (peso == 100)
                    {
                        label4.Text = "Peso ideal";
                    }
                    else
                        if (peso > 100)
                        {
                            label4.Text = ("Emagreça " + p3 + "Kg");
                        }
                        else
                            if (peso < 100)
                            {
                                label4.Text = ("Engorde " + p3 + "Kg");
                            }
                }
            }
        }
    }

    Thursday, May 10, 2012 8:19 PM

All replies

  • Veja se isso resolve seu problema:

                double altura = Convert.ToInt32(textBox1.Text);
                double peso = Convert.ToInt32(textBox2.Text);
    
                if (altura < 1.5)
                {
                    if (peso == 50)
                        label1.Text = "Peso Ideal";
                    else if (peso > 50)
                        label1.Text = "Emagreça " + Convert.ToString (peso - 50) + "Kg";
                    else
                        label1.Text = "Engorde " + (50 - peso).ToString() + "Kg";
                }
                else if (altura > 1.9)
                {
                    if (peso == 100)
                        label1.Text = "Peso Ideal";
                    else if (peso > 100)
                        label1.Text = "Emagreça " + (peso - 100).ToString() + "Kg";
                    else
                        label1.Text = "Engorde " + (100 - peso).ToString() + "Kg";
                }
                else
                {
                    if (peso == 70)
                        label1.Text = "Peso Ideal";
                    else if (peso > 70)
                        label1.Text = "Emagreça " + (peso - 70).ToString() + "Kg";
                    else
                        label1.Text = "Engorde " + (70 - peso).ToString() + "Kg";
                }

    Espero ter ajudado, abraços!


    thiagokoelho

    Thursday, May 10, 2012 8:43 PM
  • Valeu Thiago, consegui fazer. Ao invés do Int usei o Double.
    Thursday, May 10, 2012 9:19 PM
  • Posso dar uma dica? desta maneira que você está fazendo seu calculo não é o mais correto! o imc(Indice de massa corporal) que é usado para saber se pessoa necessita engordar ou emagrecer é medido desta maneira : peso/altura² o que eu faria no seu lugar seria isto:
                double altura = Convert.ToDouble(textBox1.Text);
                double peso = Convert.ToDouble(textBox2.Text);
                double imc = (peso/(altura*altura));
                
                    if(imc < 18.5)
                        label1.Text = "Seu IMC é: " + Math.Round(imc, 2) + "\nCom IMC abaixo de 18,50 você está subnutrido ou abaixo do peso";
                    else if(imc >= 18.5 && imc < 25)
                        label1.Text = "Seu IMC é : " + Math.Round(imc, 2) + "\nCom IMC entre 18,50 e 24,90 você está com o peso ideal (parabéns)";
                    else if(imc >= 25 && imc < 30)
                        label1.Text = "Seu IMC é: " + Math.Round(imc, 2) + "\nCom IMC entre 25,00 e 29,90 você está levemente acima do peso";
                    else if(imc >= 30 && imc < 35)
                        label1.Text = "Seu IMC é: " + Math.Round(imc, 2) + "\nCom IMC entre 30,00 e 34,90 você está no primeiro grau de obesidade";
                    else if(imc >= 35 && imc < 40)
                        label1.Text = "Seu IMC é: " + Math.Round(imc, 2) + "\nCom IMC entre 35,00 e 39,90 você está no segundo grau de obesidade";
                    else
                        label1.Text = "Seu IMC é: " + Math.Round(imc, 2) + "\nCom IMC acima de 40,00 você está com obesidade mórbida!"; 
    Espero ter ajudado!

    Att. Lucas Rodrigues

    Friday, May 11, 2012 12:02 PM
  • Lucas cara. Eu estava fazendo o básico. estou começando C#.

    Mas infelizmente nem o meu, nem o seu está dando certo "AQUI" no visual Studio. Ele geralmente dá um valor de por exemplo : 0,025039450

    Não consigo entender o motivo disso

    Saturday, May 12, 2012 2:46 AM
  • Usando a altura em metros(1,76)m da certo. Caso digitar em centímetros(176)cm pegue oresultado e multiplique por 1000 antes de comparar.(0,025039450*1000)=25,039450
    Saturday, May 12, 2012 11:16 AM
  • Alex eu testei este código aqui antes de postar e está funcionando perfeitamente! E se você usou o código que eu postei este número com várias casas decimais não existe já que eu coloquei Math.Round(imc,2)! Este valor dois limita as casas decimais e arredonda para cima ou para baixo! Só para constar se você está usando cm você tem que dividir por 100 e não multiplicar por 1000! E agora me veio a cabeça: Você está colocando a altura no textBox1 e o peso no textBox2? Acredito que você esteja trocando os campos de texto e por isso está dando este valor 0,025....

    Att. Lucas Rodrigues

    Monday, May 14, 2012 11:15 AM