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

C++ (IMC com estrutura condicional)


deadlocK_

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...