| Contacto | Chat | Foro |__
  
 
Principal Hoja de Vida Universidad Artículos Programas Descargas
 

Clase para manejo de números complejos (imaginarios)


PROG00020 - C/C++
La clase que se muestra a continuación, proporciona un método simple y eficiente para el manejo de números complejos. La implementación incorpora las operaciones aritméticas básicas, así como condicionales y manejo de "streams".
class COMPLEJO
{
   double R,I;

   public:
   COMPLEJO (void);
   COMPLEJO (double r,double i=0);

   COMPLEJO& operator = (COMPLEJO& c);
   COMPLEJO operator + (COMPLEJO& c);
   COMPLEJO operator - (COMPLEJO& c);
   COMPLEJO operator * (COMPLEJO& c);
   COMPLEJO operator / (COMPLEJO& c);
   int operator == (COMPLEJO& c);
   int operator != (COMPLEJO& c);
   int operator > (COMPLEJO& c);
   int operator >= (COMPLEJO& c);
   int operator < (COMPLEJO& c);
   int operator <= (COMPLEJO& c);

   friend ostream& operator << (ostream& s,COMPLEJO& c);
};
COMPLEJO::COMPLEJO (double r,double i)
{
   R= r;
   I= i;
}
COMPLEJO::COMPLEJO (void)
{
   R= 0;
   I= 0;
}
COMPLEJO& COMPLEJO::operator = (COMPLEJO& c)
{
   R= c.R;
   I= c.I;
   return *this;
}
COMPLEJO COMPLEJO::operator + (COMPLEJO& c)
{
   COMPLEJO t;
   t.R= R+c.R;
   t.I= I+c.I;
   return t;
}
COMPLEJO COMPLEJO::operator - (COMPLEJO& c)
{
   COMPLEJO t;
   t.R= R-c.R;
   t.I= I-c.I;
   return t;
}
COMPLEJO COMPLEJO::operator * (COMPLEJO& c)
{
   COMPLEJO t;
   t.R= R*c.R-I*t.I;
   t.I= R*c.I+I*c.R;
   return t;
}
COMPLEJO COMPLEJO::operator / (COMPLEJO& c)
{
   COMPLEJO t;
   double beta= c.R*c.R+c.I*c.I;
   if (beta!=0)
   {
      t.R= (R*c.R+I*c.I)/beta;
      t.I= (I*c.R-R*c.I)/beta;
   }
   return t;
}
int COMPLEJO::operator == (COMPLEJO& c)
{
   return ((R==c.R)&&(I==c.I));
}
int COMPLEJO::operator != (COMPLEJO& c)
{
   return (!((R==c.R)&&(I==c.I)));
}
int COMPLEJO::operator > (COMPLEJO& c)
{
   return ((R*R+I*I)>(c.R*c.R+c.I*c.I));
}
int COMPLEJO::operator >= (COMPLEJO& c)
{
   return ((R*R+I*I)>=(c.R*c.R+c.I*c.I));
}
int COMPLEJO::operator < (COMPLEJO& c)
{
   return ((R*R+I*I)<(c.R*c.R+c.I*c.I));
}
int COMPLEJO::operator <= (COMPLEJO& c)
{
   return ((R*R+I*I) <= (c.R*c.R+c.I*c.I));
}
ostream& operator << (ostream& s,COMPLEJO &c)
{
   if ((c.R!=0)||(c.I==0))
   {
      s << c.R;
      if (c.I>0)
         s << '+';
   }
   if (c.I!=0)
      s << c.I << 'i';
   return s;
}
Advertencia
Aunque no he escatimado esfuerzos en cuanto a proveer aplicaciones e información confiable y veraz, sin embargo no puedo garantizar que esté totalmente libre de errores; por esa razón, no asumo responsabilidad alguna por las consecuencias que se deriven de su empleo.




7-Zip

Descarga Adobre Reader

Descargar programa
  Copyright 2005 | Ramón Medina | Todos los derechos reservados | Última Actualización: Agosto del 2008 | webmaster@ramonmedina.name