Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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