using System using System Collections Generic using System Linq using

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Rect
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите координату X первого прямоугольника");
int x1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите координату Y первого прямоугольника");
int y1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите ширину первого прямоугольника");
int width1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите высоту первого прямоугольника");
int height1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите координату X второго прямоугольника");
int x2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите координату Y второго прямоугольника");
int y2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите ширину второго прямоугольника");
int width2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите высоту второго прямоугольника");
int height2 = Convert.ToInt32(Console.ReadLine());
Rectangle rect1 = new Rectangle(x1, y1, width1, height1);
Rectangle rect2 = new Rectangle(x2, y2, width2, height2);
Console.WriteLine("Введите нужную цифру на клавиатуре:" + "\n" +
"1 - Произвести пересечение прямоугольников" + "\n" +
"2 - Произвести объединение прямоугольников" + "\n" +
"3 - Произвести смещение прямоугольников и вывести пересечение, объединение");
int C = Convert.ToInt32(Console.ReadLine());
switch (C)
{
case 1:
Intrsct();
break;
case 2:
Unn();
break;
case 3:
Moving();
Intrsct();
Unn();
break;
}
void Intrsct()
{
Console.WriteLine("Пересечение прямоугольников: " + Rectangle.Intersection(rect1, rect2));
}
void Unn()
{
Console.WriteLine("Объединение прямоугольников: " + Rectangle.Union(rect1, rect2));
}
void Moving()
{
Console.WriteLine("Введите смещение прямоугольника 1 по оси X");
int a1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите смещение прямоугольника 1 по оси Y");
int b1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите смещение прямоугольника 2 по оси X");
int a2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите смещение прямоугольника 2 по оси X");
int b2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Смещённый прямоугольник 1: ");
rect1.Move(a1, b1);
Console.WriteLine(rect1);
Console.WriteLine("Смещённый прямоугольник 2: ");
rect2.Move(a2, b2);
Console.WriteLine(rect2);
}
Console.ReadLine();
}
}
public 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 Move(int x, int y)
{
X += x;
Y += y;
}
public static Rectangle Intersection(Rectangle rect1, Rectangle rect2)
{
int minX = Math.Max(rect1.X, rect2.X);
int maxX = Math.Min(rect1.X + rect1.Width, rect2.X + rect2.Width);
int minY = Math.Max(rect1.Y, rect2.Y);
int maxY = Math.Min(rect1.Y + rect1.Height, rect2.Y + rect2.Height);
if (maxX >= minX && maxY >= minY)
{
return new Rectangle(minX, minY, maxX - minX, maxY - minY);
}
return null;
}
public static Rectangle Union(Rectangle rect1, Rectangle rect2)
{
int minX = Math.Min(rect1.X, rect2.X);
int maxX = Math.Max(rect1.X + rect1.Width, rect2.X + rect2.Width);
int minY = Math.Min(rect1.Y, rect2.Y);
int maxY = Math.Max(rect1.Y + rect1.Height, rect2.Y + rect2.Height);
return new Rectangle(minX, minY, maxX - minX, maxY - minY);
}
public override string ToString()
{
return $"X = {X}, Y = {Y}, Width = {Width}, Height = {Height}";
}
}
}