using System; internal class Complex : IEquatable { public Complex(int a, int b) { A = a; B = b; } public Complex() {} public int A { get; set; } public int B { get; set; } //Свойства, позволяющие установить и получить значения полей //класса с проверкой корректности ввода исходных значений; public bool Equals(Complex other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return A == other.A && B == other.B; } public static Complex operator +(Complex first, Complex second) { return new Complex(first.A + second.A, first.B + second.B); } public static Complex operator -(Complex first, Complex second) { return new Complex(first.A - second.A, first.B - second.B); } public static Complex operator *(Complex first, Complex second) { return new Complex(first.A * second.A - first.B * second.B, first.A * second.B + second.A * first.B); } public static Complex operator /(Complex first, Complex second) { var newA = (first.A * second.A + first.B * second.B) / (int)(Math.Pow(second.A, 2) + Math.Pow(second.B, 2)); var newB = (second.A * first.B - first.A * second.B) / (int)(Math.Pow(second.A, 2) + Math.Pow(second.B, 2)); return new Complex(newA, newB); } //Метод сравнения комплексных чисел public static bool operator ==(Complex first, Complex second) { return first.A == second.A && first.B == second.B; } public static bool operator !=(Complex first, Complex second) { return !(first == second); } //Перегруженный метод для вывода в строку. Для удобства вывода значения на экран public override string ToString() {return $"({A};{B})";} //Метод сравнения какого-либо объекта с текущим объектом public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; if (obj.GetType() != GetType()) return false; return Equals((Complex)obj); } //Метод получения хеш-суммы текущего объекта public override int GetHashCode() { unchecked {return (A * 397) ^ B;} } //Вывод в консоль public void writeInConsoleInfo(int a, int b) { if (b < 0) { Console.WriteLine(a + " - " + (-b) + "i"); } else { Console.WriteLine(a + " + " + b + "i"); } } } class Program { static void Main(string[] args) { Complex myInfo = new Complex(); Console.Write("Введите первое число первой пары - "); myInfo.A = int.Parse(Console.ReadLine()); Console.Write("Введите второе число первой пары - "); myInfo.B = int.Parse(Console.ReadLine()); Complex myInfo2 = new Complex(); Console.Write("Введите первое число второй пары - "); myInfo2.A = int.Parse(Console.ReadLine()); Console.Write("Введите второе число второй пары - "); myInfo2.B = int.Parse(Console.ReadLine()); Complex myInfo3 = new Complex(); Console.Write("Введите первое число третей пары - "); myInfo3.A = int.Parse(Console.ReadLine()); Console.Write("Введите второе число третей пары - "); myInfo3.B = int.Parse(Console.ReadLine()); Complex result1 = myInfo2 + myInfo3; Complex result2 = myInfo3 - myInfo2; Complex result3 = myInfo * myInfo2; Complex result4 = myInfo / myInfo3;
Console.Write("Первая пара комплексных чисел: "); myInfo.writeInConsoleInfo(myInfo.A, myInfo.B); Console.Write("Вторая пара комплексных чисел: "); myInfo2.writeInConsoleInfo(myInfo2.A, myInfo2.B); Console.Write("Третья пара комплексных чисел: "); myInfo3.writeInConsoleInfo(myInfo3.A, myInfo3.B); Console.Write("Сложение второй и третей пар КЧ: "); result1.writeInConsoleInfo(result1.A, result1.B); Console.Write("Вычитание второй из третей пары КЧ: "); result2.writeInConsoleInfo(result2.A, result2.B); Console.Write("Умножение первой и второй пар КЧ: "); result3.writeInConsoleInfo(result3.A, result3.B); Console.Write("Деление первой на третью пару КЧ: "); result4.writeInConsoleInfo(result4.A, result4.B); Console.ReadLine(); } }
internal class Complex : IEquatable
{
public Complex(int a, int b)
{
A = a;
B = b;
}
public Complex()
{}
public int A { get; set; }
public int B { get; set; }
//Свойства, позволяющие установить и получить значения полей
//класса с проверкой корректности ввода исходных значений;
public bool Equals(Complex other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return A == other.A && B == other.B;
}
public static Complex operator +(Complex first, Complex second)
{
return new Complex(first.A + second.A, first.B + second.B);
}
public static Complex operator -(Complex first, Complex second)
{
return new Complex(first.A - second.A, first.B - second.B);
}
public static Complex operator *(Complex first, Complex second)
{
return new Complex(first.A * second.A - first.B * second.B, first.A * second.B + second.A * first.B);
}
public static Complex operator /(Complex first, Complex second)
{
var newA = (first.A * second.A + first.B * second.B) /
(int)(Math.Pow(second.A, 2) + Math.Pow(second.B, 2));
var newB = (second.A * first.B - first.A * second.B) /
(int)(Math.Pow(second.A, 2) + Math.Pow(second.B, 2));
return new Complex(newA, newB);
}
//Метод сравнения комплексных чисел
public static bool operator ==(Complex first, Complex second)
{
return first.A == second.A && first.B == second.B;
}
public static bool operator !=(Complex first, Complex second)
{
return !(first == second);
}
//Перегруженный метод для вывода в строку. Для удобства вывода значения на экран
public override string ToString()
{return $"({A};{B})";}
//Метод сравнения какого-либо объекта с текущим объектом
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != GetType()) return false;
return Equals((Complex)obj);
}
//Метод получения хеш-суммы текущего объекта
public override int GetHashCode()
{
unchecked
{return (A * 397) ^ B;}
}
//Вывод в консоль
public void writeInConsoleInfo(int a, int b)
{
if (b < 0)
{
Console.WriteLine(a + " - " + (-b) + "i");
}
else
{
Console.WriteLine(a + " + " + b + "i");
}
}
}
class Program
{
static void Main(string[] args)
{
Complex myInfo = new Complex();
Console.Write("Введите первое число первой пары - ");
myInfo.A = int.Parse(Console.ReadLine());
Console.Write("Введите второе число первой пары - ");
myInfo.B = int.Parse(Console.ReadLine());
Complex myInfo2 = new Complex();
Console.Write("Введите первое число второй пары - ");
myInfo2.A = int.Parse(Console.ReadLine());
Console.Write("Введите второе число второй пары - ");
myInfo2.B = int.Parse(Console.ReadLine());
Complex myInfo3 = new Complex();
Console.Write("Введите первое число третей пары - ");
myInfo3.A = int.Parse(Console.ReadLine());
Console.Write("Введите второе число третей пары - ");
myInfo3.B = int.Parse(Console.ReadLine());
Complex result1 = myInfo2 + myInfo3;
Complex result2 = myInfo3 - myInfo2;
Complex result3 = myInfo * myInfo2;
Complex result4 = myInfo / myInfo3;
Console.Write("Первая пара комплексных чисел: ");
myInfo.writeInConsoleInfo(myInfo.A, myInfo.B);
Console.Write("Вторая пара комплексных чисел: ");
myInfo2.writeInConsoleInfo(myInfo2.A, myInfo2.B);
Console.Write("Третья пара комплексных чисел: ");
myInfo3.writeInConsoleInfo(myInfo3.A, myInfo3.B);
Console.Write("Сложение второй и третей пар КЧ: ");
result1.writeInConsoleInfo(result1.A, result1.B);
Console.Write("Вычитание второй из третей пары КЧ: ");
result2.writeInConsoleInfo(result2.A, result2.B);
Console.Write("Умножение первой и второй пар КЧ: ");
result3.writeInConsoleInfo(result3.A, result3.B);
Console.Write("Деление первой на третью пару КЧ: ");
result4.writeInConsoleInfo(result4.A, result4.B);
Console.ReadLine();
}
}