Exercise
Enhanced ComplexNumber class
Objetive
Improve the "ComplexNumber" class, so that it overloads the operators + and - to add and subtract numbers.
Example Code
using System;
public class ComplexNumber
{
private double real;
private double imaginary;
public ComplexNumber(double real, double imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
public double Real
{
get { return real; }
}
public double Imaginary
{
get { return imaginary; }
}
public string ToString()
{
return $"({real}, {imaginary})";
}
public double GetMagnitude()
{
return Math.Sqrt(real * real + imaginary * imaginary);
}
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{
double realSum = c1.real + c2.real;
double imaginarySum = c1.imaginary + c2.imaginary;
return new ComplexNumber(realSum, imaginarySum);
}
public static ComplexNumber operator -(ComplexNumber c1, ComplexNumber c2)
{
double realDifference = c1.real - c2.real;
double imaginaryDifference = c1.imaginary - c2.imaginary;
return new ComplexNumber(realDifference, imaginaryDifference);
}
}
public class Program
{
public static void Main()
{
ComplexNumber complex1 = new ComplexNumber(3, 4);
ComplexNumber complex2 = new ComplexNumber(1, 2);
Console.WriteLine("Complex Number 1: " + complex1.ToString());
Console.WriteLine("Complex Number 2: " + complex2.ToString());
ComplexNumber sum = complex1 + complex2;
Console.WriteLine("Sum: " + sum.ToString());
ComplexNumber difference = complex1 - complex2;
Console.WriteLine("Difference: " + difference.ToString());
Console.WriteLine($"Magnitude of Complex Number 1: {complex1.GetMagnitude()}");
Console.WriteLine($"Magnitude of Complex Number 2: {complex2.GetMagnitude()}");
}
}