Sobrecarga De Operadores En La Clase Complexnumber En C#

En este ejercicio, mejoraremos la clase ComplexNumber para que admita la sobrecarga de operadores en la suma y resta de números complejos. Los números complejos constan de una parte real y una parte imaginaria (p. ej., 2 + 3i). La clase incluirá métodos para sumar y restar números complejos mediante los operadores + y -. Sobrecargaremos los operadores + y - para que puedan usarse directamente en objetos ComplexNumber.

El operador + suma las partes real e imaginaria de dos números complejos por separado, y el operador - las resta. Tras sobrecargar estos operadores, podremos usarlos en expresiones como si fueran operadores estándar.



Grupo

Clases avanzadas en C#

Objectivo

1. Cree una clase "NúmeroComplejo" con partes reales e imaginarias.
2. Sobrecargue el operador + para sumar dos números complejos.
3. Sobrecargue el operador - para restar dos números complejos.
4. Cree un método ToString para mostrar el número complejo en el formato "(real, imaginario)".
5. Pruebe los operadores sobrecargados creando instancias de la clase "NúmeroComplejo" y realizando sumas y restas.

Mejore la clase "NúmeroComplejo" para que sobrecargue los operadores + y - para sumar y restar números.

Ejemplo de ejercicio en C#

 Copiar código C#
using System;

class ComplexNumber
{
    // Private fields to store the real and imaginary parts of the complex number
    private double real;
    private double imaginary;

    // Constructor to initialize a complex number with real and imaginary parts
    public ComplexNumber(double real, double imaginary)
    {
        this.real = real;
        this.imaginary = imaginary;
    }

    // Getter for the real part
    public double Real
    {
        get { return real; }
    }

    // Getter for the imaginary part
    public double Imaginary
    {
        get { return imaginary; }
    }

    // Overload the + operator to add two complex numbers
    public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
    {
        // Add the real parts and the imaginary parts separately
        return new ComplexNumber(c1.real + c2.real, c1.imaginary + c2.imaginary);
    }

    // Overload the - operator to subtract two complex numbers
    public static ComplexNumber operator -(ComplexNumber c1, ComplexNumber c2)
    {
        // Subtract the real parts and the imaginary parts separately
        return new ComplexNumber(c1.real - c2.real, c1.imaginary - c2.imaginary);
    }

    // Method to return the magnitude (absolute value) of the complex number
    public double GetMagnitude()
    {
        return Math.Sqrt(real * real + imaginary * imaginary);
    }

    // Method to return the complex number as a string
    public override string ToString()
    {
        return $"({real}, {imaginary})";
    }
}

class Program
{
    static void Main()
    {
        // Create two complex numbers
        ComplexNumber c1 = new ComplexNumber(2, 3);  // Complex number 2 + 3i
        ComplexNumber c2 = new ComplexNumber(1, 4);  // Complex number 1 + 4i

        // Display the two complex numbers
        Console.WriteLine("Complex Number 1: " + c1);
        Console.WriteLine("Complex Number 2: " + c2);

        // Add the two complex numbers using the overloaded + operator
        ComplexNumber sum = c1 + c2;
        Console.WriteLine("Sum: " + sum);  // Expected output: (3, 7)

        // Subtract the two complex numbers using the overloaded - operator
        ComplexNumber difference = c1 - c2;
        Console.WriteLine("Difference: " + difference);  // Expected output: (1, -1)
    }
}

 Output

Complex Number 1: (2, 3)
Complex Number 2: (1, 4)
Sum: (3, 7)
Difference: (1, -1)

Comparte este ejercicio de C#

Practica más ejercicios C# de Clases avanzadas en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..