Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aramaico

C++ struct

Recommended Posts

Pessoa p[2];

   for (int x = 0; x < 2; x++)
    {
     cout << "Nome da Pessoa [" << x << "]:" << endl;
     cin >> p[x].nome;
     cout << "Sexo: " << endl;
     cin >> p[x].sexo;
     cout << "Altura: " << endl;
     cin >> p[x].altura;
     cout << "Peso: " << endl;
     cin >> p[x].peso;
     
     cout << "Imc Pessoa [ "<< x << " ]:"<< p[x].getImc();
     
    }

    //Minha dificuldade com função é passar o valor dos dois nomes p[0] e p[1] para fazer    // a comparação se for igual retorna true ou false.

    //como chamar a função e passar os dois nomes?

   p[0].verificaNome();

   //como passar o parâmetro do p[0].nome e p[1].nome;

Bom dia,

 

Estou precisando de ajuda em uma função struct, veja o código abaixo:

 

#ifndef _PESSOA_H
#define _PESSOA_H

   struct Pessoa {
     
       std::string nome;
       float altura;
       float peso;
       std::string sexo;
       float imc;

      float getImc() 
       {
         return peso/(altura*altura);
      
       }
      bool verificaNome()
        {
           if (nome == nome) { //Não sei como passar o parametro
              return true;

            }else
             {
              return false;   
             }

        }




 }

meu arquivo que principal, não vou postar todo o código mas vou postar a parte principal, acima ignore a não inclusão string.h;

 

 

alguém pode me ajudar?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bool verificaNome(string aName) {...}

 

Comece a prestar atenção no código que pode ser reduzido. Ao invés de

 

 

bool verificaNome(string aName) {
   if (nome.compare(aName) == 0) return true;
   else return false;
}

 

Escreva

 

 

bool verificaNome(string aName) {
   return !nome.compare(aName);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, _Isis_!

 

Obrigado pela ajuda na função, minha dificuldade esta em passar esse parâmetro do arquivo .cpp para o arquivo .h.
Passar parâmetros de outras forma da certo. Mas quando o nome esta dentro de um vetor de tipo "Pessoa", não consigo passar o nome das duas pessoas armazenada dentro do vetor. Mas quando criou a variável Tipo Pessoa p1 e Pessoa p2, consigo fazer a comparação. Minha dúvida se consigo utilizar um único tipo armazenado no vetor, e fazer essa comparação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique o "passar do .cpp p/ o .h", porque não vejo lógica nisso. O .h contém apenas os protótipos das funções, constantes, macros e definições de tipos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o arquivo .cpp

  Pessoa p[2];
 
    for(int x = 0; x < 2; x++){
        cout << "Nome da Pessoa [ " << x << " ]:" << endl;
        cin >> p[x].nome;
        cout << "Sexo: " << endl;
        cin >> p[x].sexo;
        cout << "Altura:  " << endl;
        cin >> p[x].altura;
        cout << "Peso: " << endl;
        cin >> p[x].peso;
 
        cout << "Imc Pessoa [ "<< x << " ] :" << p[x].getImc();
        cout << "\n"<< endl;
 
    }


        cout << p[0].verificaNome(p);

 

Este arquivo .h onde fica estrutura e funções.

struct Pessoa {
    std::string nome;
    float altura;
    float peso;
    std::string sexo;
    float imc;
     
    float getImc()
        {
          return peso/(altura*altura);
        }
       std::string verificaNome(Pessoa p1[2]) {
        if(!p1[0].nome.compare(p1[1].nome))
        {
            return "Pessoas iguais";
        }
            else
                {
                return "Pessoas Diferentes";
                }
 
    }
 
         
     
      
             
         
 
};

Criei um tipo Pessoa e armazenei duas pessoas dentro de vetor, queria comparar somente os elementos em ter que passar o vetor inteiro, então postei aqui, mas para não perder mais tempo passei como parâmetro para a função o vetor que criei e fiz a comparação dos elementos no .h.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.