using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
class Complex
{
public Complex() { realPart = 0; imaginaryPart = 0; }
public Complex(float real, float imaginary) { realPart = real; imaginaryPart = imaginary; }
public override string ToString()
{
string result = realPart.ToString();
if (imaginaryPart >= 0) result += "+";
result += imaginaryPart.ToString() + "i";
return result;
}
static public Complex operator +(Complex a, Complex b)
{
Complex result = new Complex();
result.realPart = a.realPart + b.realPart;
result.imaginaryPart = a.imaginaryPart + b.imaginaryPart;
return result;
}
static public Complex operator -(Complex a)
{
Complex result = new Complex(-a.realPart, -a.imaginaryPart);
return result;
}
static public Complex operator -(Complex a,Complex b)
{
return a + (-b);
}
static public Complex operator *(Complex a, Complex b)
{
Complex result = new Complex ();
result.realPart = (a.realPart * b.realPart) - (a.imaginaryPart * b.imaginaryPart);
result.imaginaryPart = (a.realPart * b.imaginaryPart) + (a.imaginaryPart * b.realPart);
return result;
}
static public Complex operator /(Complex a, Complex b)
{
Complex result = new Complex();
Complex Conjugal = new Complex(b.realPart, -b.imaginaryPart);
float denominator = (b.realPart * b.realPart) + (b.imaginaryPart * b.imaginaryPart);
result = a * Conjugal;
result.realPart /= denominator;
result.imaginaryPart /= denominator;
return result;
}
private float realPart;
private float imaginaryPart;
}
static void Main(string[] args)
{
Complex a = new Complex(3, 5);
Complex b = new Complex(2, 3);
Console.WriteLine(a.ToString());
Console.WriteLine(b.ToString());
Console.WriteLine((a + b).ToString());
Console.WriteLine((a - b).ToString());
Console.WriteLine((a * b).ToString());
Console.WriteLine((a / b).ToString());
}
}
}