using System; namespace Recetas.Ch01 { public class NumeroComplejo { public int Real { get; set; } public int Imaginario { get; set; } public NumeroComplejo(int real, int imaginario) { Real = real; Imaginario = imaginario; } /// /// Adición de dos números complejos. /// public static NumeroComplejo operator +(NumeroComplejo c1, NumeroComplejo c2) { return new NumeroComplejo( c1.Real + c2.Real, c1.Imaginario + c2.Imaginario); } /// /// Sustracción de dos números complejos. /// public static NumeroComplejo operator -(NumeroComplejo c1, NumeroComplejo c2) { return new NumeroComplejo( c1.Real - c2.Real, c1.Imaginario - c2.Imaginario); } /// /// Multiplica dos números complejos. /// public static NumeroComplejo operator *(NumeroComplejo c1, NumeroComplejo c2) { // Multiplicamos aplicando el método FOIL (español, PEIU: Primeros, Exteriores, Interiores, Últimos) int firstTerms = c1.Real * c2.Real; int outsideTerms = c1.Real * c2.Imaginario; int insideTerms = c1.Imaginario * c2.Real; int lastTerms = c1.Imaginario * c2.Imaginario * -1; return new NumeroComplejo(firstTerms + lastTerms, outsideTerms + insideTerms); } /// /// Divide dos números complejos. /// public static NumeroComplejo operator /(NumeroComplejo c1, NumeroComplejo c2) { // Conjugado: NumeroComplejo tmp = new NumeroComplejo(c2.Real, Convert.ToInt32(Math.Abs(c2.Imaginario))); return new NumeroComplejo((c1*tmp).Real, (c2*tmp).Imaginario); } /// /// Sobreescribe el método ToString para representar números complejos. /// public override string ToString() { return (String.Format("{0} + {1}i", Real, Imaginario)); } public static void Main() { // Creación de dos instancias de NumeroComplejo NumeroComplejo c1 = new NumeroComplejo(3, 7); NumeroComplejo c2 = new NumeroComplejo(11, 13); // Operaciones aritméticas de números complejos NumeroComplejo adicion = c1 + c2; NumeroComplejo sustraccion = c1 - c2; NumeroComplejo cociente = c1 / c2; NumeroComplejo producto = c1 * c2; // Impresión de resultados operaciones Console.WriteLine("Primer número complejo: {0}", c1); Console.WriteLine("Segundo número complejo: {0}", c2); Console.WriteLine("Adición: {0}", adicion); Console.WriteLine("Sustracción: {0}", sustraccion); Console.WriteLine("Producto: {0}", producto); Console.WriteLine("Cociente: {0}", cociente); Console.WriteLine(); } } }