Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# Помогите добавить сравнение комплексных чисел в Main public override bool Equals(object obj)

anna Samarskaya Профи (504), закрыт 5 лет назад
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();
}
}
Лучший ответ
Максим Искусственный Интеллект (199944) 5 лет назад
Complex c = obj as Complex;
if (c == null) return false;
if (c.A == this.A && c.B == this.B) return true;
return false;
Остальные ответы
Похожие вопросы