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

Passar valores retornados por função para construtor


Castro

Pergunta

:wacko:

A idéia básica é passar para parâmetros de um construtor, valores inseridos numa função de entrada de dados. Estes valores devem ser devolvidos pela função via retorno de um vetor. Os valores do vetor devem ser recebidos pelos parâmetros do construtor.

class Efetua_calculo
{
       private:
              double total;
              char texto[50];
              double soma();
              double divide();
              double Entra_valores (double *valorvet);
              
      public:
             void Mostra_calculo();
             Efetua_calculo             
             (double valora,double valorb,double valorc, double valord)
             {
              Entra_valores();               
               valora=valorvet[0];
               valorb=valorvet[1];
               valorc=valorvet[2];
               valord=valorvet[3];
               
               total=0;
               strcpy(texto,"Resultado das funcoes soma() e divide() e:");
             }
   };

double Efetua_calculo::Entra_valores (double *valorvet)
{
  double vet[4];
  int i=0;
  cout << "Entre com os valores das funções soma e divide." << endl;
  do
  {
       cin >> vet[i];
       i++;
  } while (i<4);
  
  for (i=0; i <4; i++)
  {
      valorvet[i]=vet[i];
  }    
  return (*valorvet);
}
  
void Efetua_calculo::Mostra_calculo (void)
{
     
  cout << texto << endl;
  cout << soma() << endl;
  cout << divide() << endl;
  return;
}


int main ()
{
  
   Efetua_calculo calculo();
  calculo.Mostra_calculo();
   return 0;  
}

Erros:

D:\FonteLivroC++\Classe_Efetua_calculo_construtor_parametrizado.cpp In constructor `Efetua_calculo::Efetua_calculo(double, double, double, double)'

19 D:\FonteLivroC++\Classe_Efetua_calculo_construtor_parametrizado.cpp no matching function for call to `Efetua_calculo::Entra_valores()':

note D:\FonteLivroC++\\Classe_Efetua_calculo_construtor_parametrizado.cpp:12 candidates are: double Efetua_calculo::Entra_valores(double*)

20 D:\FonteLivroC++\Classe_Efetua_calculo_construtor_parametrizado.cpp `valorvet' undeclared (first use this function)

(Each undeclared identifier is reported only once for each function it appears in.)

D:\FonteLivroC++\Classe_Efetua_calculo_construtor_parametrizado.cpp In function `int main()'

81 D:\FonteLivroC++\Classe_Efetua_calculo_construtor_parametrizado.cpp request for member `Mostra_calculo' in `calculo', which is of non-class type `Efetua_calculo ()()':

Onde estou errando ?

Obrigado

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

2 respostass a esta questão

Posts Recomendados

  • 0

Com sinceridade, parece que você está tentando algo muito avançado para o seu nível.

Erro um:

double Efetua_calculo::Entra_valores (double *valorvet)
Você está chamando essa função sem passar nenhum argumento, e esperando que magicamente este valorvet apareça onde esta função foi chamada. Você deve passar um array de double para ser preenchido por ela.
double valores[5];
Entra_valores(valores);
valores[0]; /* agora sim foi modificado pela função */
Erro dois:
Efetua_calculo(double valora,double valorb,double valorc, double valord)

int main ()
{
  
   Efetua_calculo calculo();
  calculo.Mostra_calculo();
   return 0;  
}

Seu construtor aceita parâmetros, mas você está o chamando sem passar nenhum!

---------------------------------

A idéia básica é passar para parâmetros de um construtor, valores inseridos numa função de entrada de dados. Estes valores devem ser devolvidos pela função via retorno de um vetor. Os valores do vetor devem ser recebidos pelos parâmetros do construtor.

Receba os valores no main por uma função auxiliar, sem ser de classe alguma. Depois, passe estes valores para o construtor.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

:wacko:

Nova versão

Construtor retornando lixo:

class Efetua_calculo
{
       private:
              double total;
              double valores_entrada[4];
              double devolve_valores_entrada[4];
              char texto[50];
              double soma();
              double divide();
              
      public:
             
             double Entrada_valores(void);                             
             void Saida_calculo(void);
             
                  
             Efetua_calculo(double recebe[]);
           
         };
             Efetua_calculo::Efetua_calculo(double recebe[])
             {
              
               total=0;
               strcpy(texto,"Resultado das funcoes soma() e divide() e:");
               
               recebe[0]=valores_entrada[0];
               recebe[1]=valores_entrada[1];
               recebe[2]=valores_entrada[2];
               recebe[3]=valores_entrada[3];
               
               
               devolve_valores_entrada[0]=recebe[0];
               devolve_valores_entrada[1]=recebe[1];
               devolve_valores_entrada[2]=recebe[2];
               devolve_valores_entrada[3]=recebe[3];
             }

double Efetua_calculo::Entrada_valores (void)
{
       int i=0;
       
  cout << "Entre com os valores das funções soma e divide." << endl;
  while (i<4) 
  {
       cin >> valores_entrada[i];
       i++;
  };
      
return (*valores_entrada); 
}  
    
void Efetua_calculo::Saida_calculo (void)
{
     
  cout << texto << endl;
  cout << soma() << endl;
  cout << divide() << endl;
  
  cout << "valores retornados do construtor: " <<endl;
  cout << devolve_valores_entrada[0] << endl;
  cout << devolve_valores_entrada[1] << endl;
  cout << devolve_valores_entrada[2] << endl;
  cout << devolve_valores_entrada[3] << endl;      
  return;
}

    
int main ()
{
  double inicializa[4]={0.0,0.0,0.0,0.0};
   
   //instancia a classe
  Efetua_calculo calculo(inicializa);
  calculo.Entrada_valores();                                 
  calculo.Saida_calculo();
  
     return (0);
}

saída:

Entre com os valores das funções soma e divide

0

1

2

3

valores retornados do construtor:

1.06198e+292

2.68407e-309

5.28268e-308

5.28372e-308

Qual o motivo de aparecer lixo para as variáveis que pegam os valores recebidos pelo parâmetro do construtor ?

Obrigado

Editado por Castro
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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...