Jump to content
Fórum Script Brasil
  • 0

C++ (IMC com estrutura condicional)


deadlocK_
 Share

Question

Fala galera, beleza?

Estou tentando fazer o código abaixo funcionar mas tá complicado. A questão é que fiz alguns testes e os cálculos estão batendo, mas quando o programa passa pela estrutura condicional os valores não são salvos.. o imc sempre dá como 20 independente do resultado do cálculo.

Sou novo em programação então não sei se tudo o que escrevi está de acordo.

#include <iostream>
#include <string.h>
using namespace std;

struct paciente {
       char nome[30];
       float altura;
       float peso;
       float imc; //para calcular deve-se dividir o peso pela altura
       char classificacao[25];
       int telefone ;
       /* classificação do imc = abaixo de 20 Abaixo do Peso
                                 20 a 25    Peso Ideal
                                 25 a 30    Sobrepeso
                                 30 a 35    Obesidade Leve
                                 35 a 40    Obesidade Mederada
                                 40 a 50    Obesidade Mórbida
                                 acima de 50    Super Obesidade*/
                                 
       }paciente1 , paciente2;

int main()
{
    cout << "Cadastro de Pacientes" <<endl;
    cout << "\n";
    cout << "Digite o nome do paciente 1:" << endl;
    cin >> paciente1.nome;
    cout << "Digite a altura do paciente 1:" << endl;
    cin >> paciente1.altura;
    cout << "Digite o peso do paciente 1:" << endl;
    cin >> paciente1.peso;
    cout << "Digite o telefone do paciente 1:" << endl;
    cin >> paciente1.telefone;
        paciente1.imc = paciente1.peso / (paciente1.altura*paciente1.altura);
           cout << paciente1.imc;
            //esse cout é apenas para mostrar que o cálculo está saindo corretamente.
            if (paciente1.imc < 20.0){
                  strcpy(paciente1.classificacao,"Abaixo do Peso");            
                  }
                  //fiz um teste com o IF antes de escrever tudo e estava OK. 
                  else if ((paciente1.imc = 20.0) && (paciente1.imc <= 25.0)){
                  strcpy(paciente1.classificacao,"Peso Ideal"); 
                 }
                  else if ((paciente1.imc = 26.0) && (paciente1.imc <= 30.0)){
                  strcpy(paciente1.classificacao,"Sobrepeso"); 
                 }
                  else if ((paciente1.imc = 31.0) && (paciente1.imc <= 35.0)){
                  strcpy(paciente1.classificacao,"Obedidade Leve"); 
                 }
                 else if ((paciente1.imc = 36.0) && (paciente1.imc <= 40.0)){
                  strcpy(paciente1.classificacao,"Obesidade Moderada"); 
                 }
                 else if ((paciente1.imc = 41.0) && (paciente1.imc <= 50.0)){
                  strcpy(paciente1.classificacao,"Obesidade Morbida"); 
                 }
                 else{
                  strcpy(paciente1.classificacao,"Super Obesidade"); 
            };
    cout << "\n";
    cout << "Digite o nome do paciente 2:" << endl;
    cin >> paciente2.nome;
    cout << "Digite a altura do paciente 2:" << endl;
    cin >> paciente2.altura;
    cout << "Digite o peso do paciente 2:" << endl;
    cin >> paciente2.peso;
    cout << "Digite o telefone do paciente 2:" << endl;
    cin >> paciente2.telefone;
        paciente2.imc = paciente2.peso / (paciente2.altura*paciente2.altura);
              cout << paciente2.imc;
            if (paciente2.imc < 20.0){
                  strcpy(paciente2.classificacao,"Abaixo do Peso");            
                  }   
                  else if ((paciente2.imc = 20.0) && (paciente2.imc <= 25.0)){
                  strcpy(paciente2.classificacao,"Peso Ideal"); 
                 }
                  else if ((paciente2.imc = 26.0) && (paciente2.imc <= 30.0)){
                  strcpy(paciente2.classificacao,"Sobrepeso"); 
                 }
                  else if ((paciente2.imc = 31.0) && (paciente2.imc <= 35.0)){
                  strcpy(paciente2.classificacao,"Obedidade Leve"); 
                 }
                 else if ((paciente2.imc = 36.0) && (paciente2.imc <= 40.0)){
                  strcpy(paciente2.classificacao,"Obesidade Moderada"); 
                 }
                 else if ((paciente2.imc = 41.0) && (paciente2.imc <= 50.0)){
                  strcpy(paciente1.classificacao,"Obesidade Morbida"); 
                 }
                 else {
                  strcpy(paciente2.classificacao,"Super Obesidade"); 
            };       
      system ("cls");      
      cout << "Dados do Paciente 1:" << endl << "\n";           
      cout << "Nome: " << paciente1.nome << endl;
      cout << "Altura: " << paciente1.altura << "\t" << "Peso: " << paciente1.peso << endl;
      cout << "IMC: " << paciente1.imc << "\t" << "Classificacao: " << paciente1.classificacao << endl;
      cout << "\n\n";          
      cout << "Dados do Paciente 2:" << endl << "\n";           
      cout << "Nome: " << paciente2.nome << endl;
      cout << "Altura: " << paciente2.altura << "\t" << "Peso: " << paciente2.peso << endl;
      cout << "IMC: " << paciente2.imc << "\t" << "Classificacao: " << paciente2.classificacao << endl;                          
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

 

 

Valeu pela ajuda!

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0
8 horas atrás, deadlocK_ disse:

if ((paciente1.imc = 20.0) && (paciente1.imc <= 25.0))

Não entendi isso aí. você tá testando se o imc é menor ou igual a 25, porém antes você atribui o valor 20 pra ele.

Acho que você quis escrever:

if ((paciente1.imc >= 20.0) && (paciente1.imc <= 25.0))

Se foi essa sua intenção...

Dá uma olhada os outros testes tb...

Link to comment
Share on other sites

  • 0

exatamente o que o Mr L disse, no segundo if voce atribui 20 ao imc do paciente, dessa forma ele sempre vai ser <=25, portanto nunca entrara nos outros if, é so arrumar os operadores:
<= menor ou igual
>= maior ou igual
== igual
= recebe ( note que em todos os seus if voce atribui um valor ao imc)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...