Sei sulla pagina 1di 4

//Programacin 1 Carnet ll09047 Nombre: Santos

Lpez Lpez
//Clase complejo dos archivos
// fichero complejo.h
// declaracin de la clase complejo y definicin
#ifndef __COMPLEJO_H__
#define __COMPLEJO_H__
#include<iostream>
using namespace std;
class complejo
{
private:
double real;
double imag;
public:
// Constructores
complejo(void);
complejo(double, double im=0.0);
complejo(const complejo&);
// SetThings
void SetData(void);
void SetReal(double);
void SetImag(double);
// GetThings
double GetReal(void){return real;}
double GetImag(void){return imag;}
// Sobrecarga de operadores aritmticos
complejo operator+ (const complejo&);
complejo operator- (const complejo&);
complejo operator* (const complejo&);
complejo operator/ (const complejo&);
// Sobrecarga del operador de asignacin
complejo& operator= (const complejo&);
// Sobrecarga de operadores de comparacin
friend int operator== (const complejo&, const complejo&);
friend int operator!= (const complejo&, const complejo&);
// Sobrecarga del operador de insercin en el flujo de salida
friend ostream& operator<< (ostream&, const complejo&);
};
// constructor por defecto
complejo::complejo(void)
{
real = 0.0;
imag = 0.0;
}
// constructor general
complejo::complejo(double re, double im)
{

real = re;
imag = im;
}
// constructor de copia
complejo::complejo(const complejo& c)
{
real = c.real;
imag = c.imag;
}
// funcin miembro SetData()
void complejo::SetData(void)
{
cout << "Introduzca el valor real del complejo: ";
cin >> real;
cout << "Introduzca el valor imaginario del complejo: ";
cin >> imag;
}
void complejo::SetReal(double re)
{
real = re;
}
void complejo::SetImag(double im)
{
imag = im;
}
// operador miembro + sobrecargado
complejo complejo::operator+ (const complejo &a)
{
complejo suma;
suma.real = real + a.real;
suma.imag = imag + a.imag;
return suma;
}
// operador miembro - sobrecargado
complejo complejo::operator- (const complejo &a)
{
complejo resta;
resta.real = real - a.real;
resta.imag = imag - a.imag;
return resta;
}
// operador miembro * sobrecargado
complejo complejo::operator* (const complejo &a)
{
complejo producto;
producto.real = real*a.real - imag*a.imag;
producto.imag = real*a.imag + a.real*imag;
return producto;

}
// operador miembro / sobrecargado
complejo complejo::operator/ (const complejo &a)
{
complejo cociente;
double d = a.real*a.real + a.imag*a.imag;
cociente.real = (real*a.real + imag*a.imag)/d;
cociente.imag = (-real*a.imag + imag*a.real)/d;
return cociente;
}
// operador miembro de asignacin sobrecargado
complejo& complejo::operator= (const complejo &a)
{
real = a.real;
imag = a.imag;
return (*this);
}
// operador friend de test de igualdad sobrecargado
int operator== (const complejo& a, const complejo& b)
{
if (a.real==b.real && a.imag==b.imag)
return 1;
else
return 0;
}
// operador friend de test de desigualdad sobrecargado
int operator!= (const complejo& a, const complejo& b)
{
if (a.real!=b.real || a.imag!=b.imag)
return 1;
else
return 0;
}
// operador friend << sobrecargado
ostream& operator << (ostream& co, const complejo &a)
{
co << a.real;
long fl = co.setf(ios::showpos);
co << a.imag << "i";
co.flags(fl);
return co;
}
#endif

//Programacin 1 Carnet ll09047 Nombre:


Santos Lpez Lpez
//Clase complejo dos archivos
// fichero main.cpp
#include"complejo.h"
void main(void)
{
// se crean dos complejos con el constructor general
complejo c1(1.0, 1.0);
complejo c2(2.0, 2.0);
// se crea un complejo con el constructor por defecto
complejo c3;
// se da valor a la parte real e imaginaria de c3
c3.SetReal(5.0);
c3.SetImag(2.0);
// se crea un complejo con el valor por defecto (0.0) del 2 argumento
complejo c4(4.0);
// se crea un complejo a partir del resultado de una expresin
// se utiliza el constructor de copia
complejo suma = c1 + c2;
// se crean tres complejos con el constructor por defecto
complejo resta, producto, cociente;
// se asignan valores con los operadores sobrecargados
resta = c1 - c2;
producto = c1 * c2;
cociente = c1 / c2;
// se imprimen los nmeros complejos con el operador << sobrecargado
cout << c1 << ", " << c2 << ", " << c3 << ", " << c4 << endl;
cout << "Primer complejo: " << c1 << endl;
cout << "Segundo complejo: " << c2 << endl;
cout << "Suma: " << suma << endl;
cout << "Resta: " << resta << endl;
cout << "Producto: " << producto << endl;
cout << "Cociente: " << cociente << endl;
// se comparan complejos con los operadores == y != sobrecargados
if (c1==c2)
cout << "Los complejos son iguales." << endl;
else
cout << "Los complejos no son iguales." << endl;
if (c1!=c2)
cout << "Los complejos son diferentes." << endl;
else
cout << "Los complejos no son diferentes." << endl;
cout << "Ya he terminado." << endl;
}

Potrebbero piacerti anche