using System;
namespace VectorTask
{
// Класс, описывающий двумерный вектор
class Vector2D
{
// Поля X и Y
public int X;
public int Y;
// Конструктор для инициализации координат
public Vector2D(int x, int y)
{
X = x;
Y = y;
}
// 1. Оператор + : Сложение двух векторов
public static Vector2D operator +(Vector2D a, Vector2D b)
{
return new Vector2D(a.X + b.X, a.Y + b.Y);
}
// 2. Оператор - : Вычитание одного вектора из другого
public static Vector2D operator -(Vector2D a, Vector2D b)
{
return new Vector2D(a.X - b.X, a.Y - b.Y);
}
// 3. Оператор * : Умножение вектора на число (скаляр)
public static Vector2D operator *(Vector2D a, int k)
{
return new Vector2D(a.X * k, a.Y * k);
}
// 4. Оператор == : Проверка равенства векторов
public static bool operator ==(Vector2D a, Vector2D b)
{
// Проверка на идентичность координат
return a.X == b.X && a.Y == b.Y;
}
// Оператор != : Проверка неравенства (обязателен в паре с ==)
public static bool operator !=(Vector2D a, Vector2D b)
{
return !(a == b);
}
// Метод вывода вектора
public void Print()
{
Console.WriteLine($"({X}, {Y})");
}
}
class Program
{
static void Main()
{
// Инициализация векторов согласно примеру
Vector2D A = new Vector2D(3, 4);
Vector2D B = new Vector2D(1, 2);
Console.Write("Вектор A: "); A.Print();
Console.Write("Вектор B: "); B.Print();
Console.WriteLine();
// Демонстрация работы операторов
Vector2D sum = A + B;
Console.Write("A + B = "); sum.Print(); // Ожидается (4, 6)
Vector2D diff = A - B;
Console.Write("A - B = "); diff.Print(); // Ожидается (2, 2)
Vector2D mult = A * 2;
Console.Write("A * 2 = "); mult.Print(); // Ожидается (6, 8)
bool isEqual = (A == B);
Console.WriteLine($"A == B -> {isEqual}"); // Ожидается False
// Чтобы консоль не закрылась сразу
Console.ReadKey();
}
}
}