Загрузка данных


using System;

namespace RectangleGeometry
{
    // Класс "Прямоугольник"
    public class Rectangle
    {
        // Поля для координат верхнего левого и правого нижнего углов
        public double X1 { get; private set; } // верхний левый X
        public double Y1 { get; private set; } // верхний левый Y
        public double X2 { get; private set; } // правый нижний X
        public double Y2 { get; private set; } // правый нижний Y

        // Конструктор
        public Rectangle(double x1, double y1, double x2, double y2)
        {
            // Убедимся, что координаты образуют прямоугольник
            if (x1 >= x2 || y1 <= y2)
            {
                throw new ArgumentException("Неверные координаты: x1 должен быть < x2, y1 должен быть > y2 для верхнего левого и правого нижнего углов.");
            }
            
            X1 = x1;
            Y1 = y1;
            X2 = x2;
            Y2 = y2;
        }

        // Ширина прямоугольника
        public double Width()
        {
            return X2 - X1;
        }

        // Высота прямоугольника
        public double Height()
        {
            return Y1 - Y2;
        }

        // Периметр
        public double Perimeter()
        {
            return 2 * (Width() + Height());
        }

        // Площадь
        public double Area()
        {
            return Width() * Height();
        }

        // Проверка на квадрат
        public bool IsSquare()
        {
            return Math.Abs(Width() - Height()) < 0.000001; // учтём погрешность double
        }

        // Перемещение прямоугольника (смещение по X и Y)
        public void Move(double deltaX, double deltaY)
        {
            X1 += deltaX;
            Y1 += deltaY;
            X2 += deltaX;
            Y2 += deltaY;
        }

        // Изменение ширины (правый нижний угол движется по X)
        public void SetWidth(double newWidth)
        {
            if (newWidth <= 0)
                throw new ArgumentException("Ширина должна быть положительной.");
            
            X2 = X1 + newWidth;
        }

        // Изменение высоты (правый нижний угол движется по Y)
        public void SetHeight(double newHeight)
        {
            if (newHeight <= 0)
                throw new ArgumentException("Высота должна быть положительной.");
            
            Y2 = Y1 - newHeight;
        }

        // Вывод информации о прямоугольнике
        public void PrintInfo()
        {
            Console.WriteLine($"Прямоугольник: [{X1}, {Y1}] - [{X2}, {Y2}]");
            Console.WriteLine($"Ширина: {Width():F2}, Высота: {Height():F2}");
            Console.WriteLine($"Периметр: {Perimeter():F2}, Площадь: {Area():F2}");
            Console.WriteLine($"Квадрат: {IsSquare()}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Создаём прямоугольник
                Rectangle rect = new Rectangle(0, 10, 5, 0);
                Console.WriteLine("Исходный прямоугольник:");
                rect.PrintInfo();
                Console.WriteLine();

                // Перемещаем
                rect.Move(3, 2);
                Console.WriteLine("После перемещения на (3, 2):");
                rect.PrintInfo();
                Console.WriteLine();

                // Меняем ширину
                rect.SetWidth(8);
                Console.WriteLine("После изменения ширины на 8:");
                rect.PrintInfo();
                Console.WriteLine();

                // Меняем высоту
                rect.SetHeight(8);
                Console.WriteLine("После изменения высоты на 8:");
                rect.PrintInfo();
                Console.WriteLine();

                // Проверим, стал ли квадратом
                if (rect.IsSquare())
                    Console.WriteLine("Теперь прямоугольник является квадратом!");
                else
                    Console.WriteLine("Прямоугольник не квадрат.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Ошибка: {ex.Message}");
            }

            Console.ReadKey();
        }
    }
}