Составить описание класса прямоугольников со сторонами, параллельными осям координат - C# (186036)

Узнай цену своей работы

Формулировка задачи:

Помогите с заданием, пожалуйста. Вот само задание: Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью ( пересечением ) двух прямоугольников. Написать программу, демонстрирующую все разработанные элементы класса. Заранее спасибо.

Решение задачи: «Составить описание класса прямоугольников со сторонами, параллельными осям координат»

textual
Листинг программы
using System;
 
namespace ConsoleApplication1
{
 
    class Rectangle
    {
        public Rectangle(int x, int y, int width, int height)
        {
            X = x;
            Y = y;
            Width = width;
            Height = height;
        }
 
        public int X
        {
            get;
            set;
        }
 
        public int Y
        {
            get;
            set;
        }
 
        public int Width
        {
            get;
            set;
        }
 
        public int Height
        {
            get;
            set;
        }
 
        public void Offset(int x, int y)
        {
            X += x;
            Y += y;
        }
 
        public static Rectangle Intersect(Rectangle a, Rectangle b)
        {
            int maxStartX = Math.Max(a.X, b.X);
            int minEndX = Math.Min(a.X + a.Width, b.X + b.Width);
            int MaxStartY = Math.Max(a.Y, b.Y);
            int minEndY = Math.Min(a.Y + a.Height, b.Y + b.Height);
            if (minEndX >= maxStartX && minEndY >= MaxStartY)
            {
                return new Rectangle(maxStartX, MaxStartY, minEndX - maxStartX, minEndY - MaxStartY);
            }
            return null;
        }
 
        public static Rectangle Union(Rectangle a, Rectangle b)
        {
            int minStartX = Math.Min(a.X, b.X);
            int maxEndX = Math.Max(a.X + a.Width, b.X + b.Width);
            int minStartY = Math.Min(a.Y, b.Y);
            int MaxEndY = Math.Max(a.Y + a.Height, b.Y + b.Height);
            return new Rectangle(minStartX, minStartY, maxEndX - minStartX, MaxEndY - minStartY);
        }
 
        public override string ToString()
        {
            return String.Format("X:{0} Y:{1} W:{2} H:{3}", X, Y, Width, Height);
        }
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            Rectangle r1 = new Rectangle(0, 0, 10, 10);
            Console.Write("Исходный прямоугольник: " + r1);
 
            Console.Write("Смещённый прямоугольник: ");
            r1.Offset(5, 0);
            Console.WriteLine(r1);
 
            Rectangle r2 = new Rectangle(2, 2, 20, 20);
            Console.WriteLine("Пересечение прямоугольников: " + Rectangle.Intersect(r1, r2));
            Console.WriteLine("Объединение прямоугольников: " + Rectangle.Union(r1, r2));
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы