Bienvenido(a), Visitante. Favor de ingresar o registrarse.

Ingresar con nombre de usuario, contraseña y duración de la sesión

Foros del Club

Páginas: [1]   Ir Abajo
  Enviar tema  |  Imprimir  
Autor Tema: Ejemplo de sobrecarga de operadores  (Leído 395 veces)
0 Usuarios y 1 Visitante están viendo este tema.
CID
Administrador
Legend
*****

Prestigio: 22
Desconectado Desconectado

Sexo: Masculino
Estudiante de: Arte de la informática
Título universitario: Programador
Profesión: Desarrollador
Mensajes: 1136



WWW
Lenguajes:
Varios
Bases de datos:
Varios
« en: 05/10/2006, 18:15:30 »

A ésto me lo pidio un amigo, solo le puse sobrecarga al "+", con los demás operadores binarios es practicamente lo mismo.

Código
#include <string>
#include <iostream>
using namespace std;
 
class TFraccion
{
private:
int num, den;
int gcd(int a, int b);
public:
TFraccion();
TFraccion(int num, int den);
TFraccion operator + (TFraccion f);
TFraccion & operator = (TFraccion f);
int getNum(){return num;};
int getDen(){return den;};
void getFormat(){
if(den == 1)
cout << num;
else
cout << num << "/" << den;
};
};
 
 
int TFraccion::gcd(int a, int b){
while(true){
if((a = a % b) == 0) return b;
if((b = b % a) == 0) return a;
}
}
 
TFraccion::TFraccion(){
TFraccion(0, 1);
}
TFraccion::TFraccion(int num, int den){
int m = gcd(num, den);
this->num = num/m;
this->den = den/m;
}
 
TFraccion TFraccion::operator + (TFraccion f){
int m;
TFraccion r;
r.num = this->num * f.den + this->den * f.num;
r.den = this->den * f.den;
m = gcd(r.num, r.den);
r.num = r.num/m;
r.den = r.den/m;
return r;
}
 
TFraccion & TFraccion::operator = (TFraccion f){
int m = gcd(f.num, f.den);
num = f.num/m;
den = f.den/m;
 
return *this;
 
}
 
// Testeo
 
int main()
{
TFraccion r, a(3,2), *b = new TFraccion(1,2), c(1,4);
cout << "r = "; a.getFormat(); cout << " + "; b->getFormat(); cout << " = ";
r = a + *b;
cout << r.getNum() << "/" << r.getDen() << " = "; r.getFormat(); cout << endl;
cout << "r = "; a.getFormat(); cout << " + "; b->getFormat(); cout << " + "; c.getFormat(); cout << " = ";
r = a + *b + c;
cout << r.getNum() << "/" << r.getDen() << " = "; r.getFormat(); cout << endl;
delete b;
return 0;
}
 

La salida es la siguiente:

r = 3/2 + 1/2 = 2/1 = 2
r = 3/2 + 1/2 + 1/4 = 9/4 = 9/4


Saludos.
En línea

Ge0Ks
Technocrat
*********

Prestigio: 3
Desconectado Desconectado

Mensajes: 131



« Respuesta #1 en: 05/10/2006, 20:29:14 »

jajajaj gracias amigo, voy a ver como lo implemento Cheesy muchisimas gracias por el ejemplo, me sirvio mucho
En línea




Gracias Mari -- germanb@hotdesign.com.ar --
                  -- germanazo@papadedios.com.ar --
Foros del Club
   

 En línea
Páginas: [1]   Ir Arriba
  Enviar tema  |  Imprimir  
 
Ir a: