Peixoto 0 Denunciar post Postado Maio 15, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites
Peixoto 0 Denunciar post Postado Maio 16, 2011 Antes de tentar passar valores para o construtor resolvi fazer a seguinte alteração: class Efetua_calculo { private: double total; char texto[50]; double valores_entrada[4]; double soma(); double divide(); double Retorna_valores (double *valorvet); public: void Entrada_Saida_calculo(); Efetua_calculo() { valores_entrada[0]=0; valores_entrada[1]=0; valores_entrada[2]=0; valores_entrada[3]=0; total=0; strcpy(texto,"Resultado das funcoes soma() e divide() e:"); } }; double Efetua_calculo:: Retorna_valores (double *valorvet) { for (int i=0; i <4; i++) { valorvet[i]=valores_entrada[i]; } return (*valorvet); } void Efetua_calculo::Entrada_Saida_calculo (void) { int i; cout << "Entre com os valores das funções soma e divide." << endl; do { cin >> valores_entrada[i]; i++; } while (i<4); Retorna_valores (valores_entrada); cout << texto << endl; cout << soma() << endl; cout << divide() << endl; return; } int main () { Efetua_calculo calculo; calculo.Entrada_Saida_calculo(); return (0); } Nesta versão não tem mais erro de compilação, mas erro em tempo de execução após eu entrar com o primeiro valor. Qual o erro ? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Peixoto 0 Denunciar post Postado Maio 21, 2011 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 divide0 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 Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 5, 2011 calma ai deixa eu ver se eu entendi bem.. você fez isso: 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]; } Você recebe o vetor que chama 'recebe[]' e atribui um outro vetor que ainda não tem nd nele?? []s Compartilhar este post Link para o post Compartilhar em outros sites
Peixoto 0 Denunciar post Postado Julho 2, 2011 :( É pena que que não tenho como excluir esta bobagem. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Julho 12, 2011 Excluir pq mano, acontece ^^ []s Compartilhar este post Link para o post Compartilhar em outros sites