Problema ejercicio

Iniciado por overxfl0w13, 29 Junio 2012, 14:50 PM

0 Miembros y 1 Visitante están viendo este tema.

overxfl0w13

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 (cpp) [Seleccionar]
#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:

Código (cpp) [Seleccionar]
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 :)
[/url]

do-while

¡Buenas!

Estas devolviendo cero para todas las operaciones.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

overxfl0w13

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 :)
[/url]

do-while

Código (cpp) [Seleccionar]

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:
Código (cpp) [Seleccionar]

return *this;
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

overxfl0w13

Cita de: do-while en 29 Junio 2012, 23:45 PM
Código (cpp) [Seleccionar]

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:
Código (cpp) [Seleccionar]

return *this;


Aaaah vale ya pillo el fallo, muchas gracias do-while :)
[/url]