Загрузка данных
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();
}
}
}