Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: overxfl0w13 en 29 Junio 2012, 14:50 pm



Título: Problema ejercicio
Publicado por: overxfl0w13 en 29 Junio 2012, 14:50 pm
Buenas, me he puesto a hacer un ejercicio para practicar y la verdad es que se me ha enrevesado un poco, no sé porque.

El ejercicio consiste en crear una clase y sus métodos para que este programa logre funcionar:

Código
  1. #include <iostream>
  2. #include "Fraccion.hpp"
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. Fraccion f1(1.0,4.0);
  8. Fraccion f2(1.0,2.0);
  9. Fraccion f3;
  10. Fraccion f4(4);
  11. Fraccion suma = f1.Suma(f2);
  12. Fraccion resta = f1.Resta(f3);
  13. Fraccion producto = f1.Multiplica(f4);
  14. Fraccion cociente = f1.Divide(f2);
  15. cout << "Primera Fraccion: " << f1.Prt() << endl;
  16. cout << "Segunda Fraccion: " << f2.Prt() << endl;
  17. cout << "Tercera Fraccion: " << f3.Prt() << endl;
  18. cout << "Cuarta Fraccion: " << f4.Prt() << endl;
  19. cout << "Suma " << suma.Prt() << endl;
  20. cout << "Resta " << resta.Prt() << endl;
  21. cout << "Producto " << producto.Prt() << endl;
  22. cout << "Cociente " << cociente.Prt() << endl;
  23. return 0;
  24. }
  25.  

Vale, hasta ahí bien, esta es la clase que he creado, junto con sus métodos:

Código
  1. class Fraccion
  2. {
  3. public:
  4. Fraccion(float numerador,float denominador);
  5. ~Fraccion();
  6. int Suma(Fraccion objeto);
  7. int Resta(Fraccion objeto);
  8. int Multiplica(Fraccion objeto);
  9. int Divide(Fraccion objeto);
  10. float Prt() const;
  11. private:
  12. float fraccion,resultado;
  13. };
  14.  
  15.  
  16. Fraccion::Fraccion(float numerador = 0.0,float denominador = 1.0)
  17. {
  18. fraccion = numerador / denominador;
  19. resultado = numerador / denominador;
  20. }
  21.  
  22. Fraccion::~Fraccion(){}
  23.  
  24. int Fraccion::Suma(Fraccion objeto)
  25. {
  26. this->resultado = this->fraccion + objeto.fraccion;
  27. return 0;
  28. }
  29.  
  30. int Fraccion::Resta(Fraccion objeto)
  31. {
  32. this->resultado = this->fraccion - objeto.fraccion;
  33. return 0;
  34. }
  35.  
  36. int Fraccion::Multiplica(Fraccion objeto)
  37. {
  38. this->resultado = this->fraccion * objeto.fraccion;
  39. return 0;
  40. }
  41.  
  42. int Fraccion::Divide(Fraccion objeto)
  43. {
  44. this->resultado = this->fraccion / objeto.fraccion;
  45. return 0;
  46. }
  47.  
  48. float Fraccion::Prt() const
  49. {
  50. return this->resultado;
  51. }
  52.  

Muy posiblemente el error esté en las variables porque me he hecho un lío con ambas y no obtengo la salida esperada.

Un saludo y gracias de antemano :)


Título: Re: Problema ejercicio
Publicado por: do-while en 29 Junio 2012, 17:51 pm
¡Buenas!

Estas devolviendo cero para todas las operaciones.

¡Saludos!


Título: Re: Problema ejercicio
Publicado por: overxfl0w13 en 29 Junio 2012, 20:41 pm
¡Buenas!

Estas devolviendo cero para todas las operaciones.

¡Saludos!

He establecido como int los métodos porque void no me los acepta y no sé porque, por eso retornan 0, creo que por eso no será no?

Gracias por la respuesta :)


Título: Re: Problema ejercicio
Publicado por: do-while en 29 Junio 2012, 23:45 pm
Código
  1. Fraccion suma = f1.Suma(f2);
  2. Fraccion resta = f1.Resta(f3);
  3. Fraccion producto = f1.Multiplica(f4);
  4. Fraccion cociente = f1.Divide(f2);
  5.  

Si cada uno de estos metodos esta devolviendo cero, estas asignando cero a cada una de las variables.

Siempre puedes devolver una referencia al objeto que invoca a las funciones:
Código
  1. return *this;
  2.  


Título: Re: Problema ejercicio
Publicado por: overxfl0w13 en 30 Junio 2012, 11:43 am
Código
  1. Fraccion suma = f1.Suma(f2);
  2. Fraccion resta = f1.Resta(f3);
  3. Fraccion producto = f1.Multiplica(f4);
  4. Fraccion cociente = f1.Divide(f2);
  5.  

Si cada uno de estos metodos esta devolviendo cero, estas asignando cero a cada una de las variables.

Siempre puedes devolver una referencia al objeto que invoca a las funciones:
Código
  1. return *this;
  2.  

Aaaah vale ya pillo el fallo, muchas gracias do-while :)