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:
#include <iostream>
#include "Fraccion.hpp"
using namespace std;
int main()
{
Fraccion f1(1.0,4.0);
Fraccion f2(1.0,2.0);
Fraccion f3;
Fraccion f4(4);
Fraccion suma = f1.Suma(f2);
Fraccion resta = f1.Resta(f3);
Fraccion producto = f1.Multiplica(f4);
Fraccion cociente = f1.Divide(f2);
cout << "Primera Fraccion: " << f1.Prt() << endl;
cout << "Segunda Fraccion: " << f2.Prt() << endl;
cout << "Tercera Fraccion: " << f3.Prt() << endl;
cout << "Cuarta Fraccion: " << f4.Prt() << endl;
cout << "Suma " << suma.Prt() << endl;
cout << "Resta " << resta.Prt() << endl;
cout << "Producto " << producto.Prt() << endl;
cout << "Cociente " << cociente.Prt() << endl;
return 0;
}
Vale, hasta ahí bien, esta es la clase que he creado, junto con sus métodos:
class Fraccion
{
public:
Fraccion(float numerador,float denominador);
~Fraccion();
int Suma(Fraccion objeto);
int Resta(Fraccion objeto);
int Multiplica(Fraccion objeto);
int Divide(Fraccion objeto);
float Prt() const;
private:
float fraccion,resultado;
};
Fraccion::Fraccion(float numerador = 0.0,float denominador = 1.0)
{
fraccion = numerador / denominador;
resultado = numerador / denominador;
}
Fraccion::~Fraccion(){}
int Fraccion::Suma(Fraccion objeto)
{
this->resultado = this->fraccion + objeto.fraccion;
return 0;
}
int Fraccion::Resta(Fraccion objeto)
{
this->resultado = this->fraccion - objeto.fraccion;
return 0;
}
int Fraccion::Multiplica(Fraccion objeto)
{
this->resultado = this->fraccion * objeto.fraccion;
return 0;
}
int Fraccion::Divide(Fraccion objeto)
{
this->resultado = this->fraccion / objeto.fraccion;
return 0;
}
float Fraccion::Prt() const
{
return this->resultado;
}
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 :)
¡Buenas!
Estas devolviendo cero para todas las operaciones.
¡Saludos!
Cita de: do-while en 29 Junio 2012, 17:51 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 :)
Fraccion suma = f1.Suma(f2);
Fraccion resta = f1.Resta(f3);
Fraccion producto = f1.Multiplica(f4);
Fraccion cociente = f1.Divide(f2);
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:
return *this;
Cita de: do-while en 29 Junio 2012, 23:45 PM
Fraccion suma = f1.Suma(f2);
Fraccion resta = f1.Resta(f3);
Fraccion producto = f1.Multiplica(f4);
Fraccion cociente = f1.Divide(f2);
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:
return *this;
Aaaah vale ya pillo el fallo, muchas gracias do-while :)