Números complejos Curso de Programación C# Sharp

Lección:

Más sobre Clases


Ejercicio:

Números complejos 14


Objetivo:

Un número complejo tiene dos partes: la parte real y la parte imaginaria. En un número como a+bi (2-3i, por ejemplo) la parte real sería "a" (2) y la parte imaginaria sería "b" (-3).

Cree una clase ComplexNumber con:
Un constructor para establecer los valores de la pieza real y la parte imaginaria.
Setters y getters para ambos.
Un método "ToString", que devolvería "(2,-3)"
Un método "GetMagnitude" para devolver la magnitud del número complejo (raíz cuadrada de a2+b2)
Un método "Add", para sumar dos números complejos (la parte real será la suma de ambas partes reales, y la parte imaginaria será la suma de ambas partes imaginarias)
Cree un programa de prueba para probar estas capacidades.


Código:

using System;
class ComplexNumber
{
    protected double a, b;

    public ComplexNumber(double realPart, double imaginaryPart)
    {
        a = realPart;
        b = imaginaryPart;
    }


    public double GetReal()
    {
        return a;
    }


    public void SetReal(double a)
    {
        this.a = a;
    }


    public double GetImaginary()
    {
        return b;
    }


    public void SetImaginary(double b)
    {
        this.b = b;
    }


    public new string ToString()
    {
        return "(" + a + "," + b + ")";
    }


    public double GetMagnitude()
    {
        return Math.Sqrt((a * a) + (b * b));
    }


    public void Add(ComplexNumber c2)
    {
        a += c2.GetReal();
        b += c2.GetImaginary();
    }

}

class ComplexTest
{
    static void Main()
    {
        bool debug = false;

        ComplexNumber number = new ComplexNumber(5, 2);
        Console.WriteLine("Number is: " + number.ToString());

        number.SetImaginary(-3);
        Console.WriteLine("Number is: " + number.ToString());

        Console.Write("Magnitude is: ");
        Console.WriteLine(number.GetMagnitude());

        ComplexNumber number2 = new ComplexNumber(-1, 1);
        number.Add(number2);
        Console.Write("After adding: ");
        Console.WriteLine(number.ToString());

        if (debug)
            Console.ReadLine();
    }
}