Составить описание класса прямоугольника со сторонами, параллельными осям координат - C# (206269)
Формулировка задачи:
Задание:Составить описание класса прямоугольника со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольника на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего 2 заданных прямоугольника и прямоугольник, являющегося общей частью(пересечением) 2-х прямоугольников.
Я вот нашел тут на форуме тут есть перемещение, изменение размера, но я не могу понять, что с построением прямоугольника, являющегося общей частью(пересечением) 2-х прямоугольников! тут есть функция sovm, которая строит наименьший прямоугольник, содержащий 2 заданных прямоугольника. помогите добавить построение прямоугольника, являющегося общей частью(пересечением) 2-х прямоугольников.
public class rectangle { public static bool brake = false; int x, y, shirina, visota; public rectangle(int x, int y, int shirina, int visota) { this.x = x; this.y = y; this.shirina = shirina; this.visota = visota; } public void perem(int l, int h, ref int x, ref int y) { x -= l; y -= h; } public void sovm(int x1, int x2, int y1, int y2, int shirina1, int shirina2, int visota1, int visota2) { if (x1 > x2) { int buf = x1; x1 = x2; x2 = buf; } if (x1 + shirina1 < x2 + shirina2) { x = x1; shirina = x2 - x1 + shirina2; } else { x = x1; shirina = shirina2; } //////////////////////// if (y1 > y2) { int buf = y1; y1 = y2; y2 = buf; } if (y1 + visota1 < y2 + visota2) { y = y1; visota = y2 - y1 + visota2; } else { y = y1; visota = visota2; } Console.WriteLine("x={0},y={1},shirina={2},visota={3}", x, y, shirina, visota); } public void izm(int x, int y, ref int shirina, ref int visota) { shirina -= x; visota -= y; } public void show(int x, int y, int shirina, int visota) { Console.WriteLine("{0} {1} {2} {3}", x, y, shirina, visota); } } //----------------------------------------------------------------------------------------------------------------------- class Go { static void Main(string[] args) { Console.WriteLine("Строим по левой нижней точке, высоте и длине"); Console.WriteLine("Варианты команд:\n Perem Izm Show Sovm Exit"); Console.WriteLine("Введите x"); int x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите y"); int y = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите ширину"); int shirina = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Введите высоту"); int visota = Convert.ToInt32(Console.ReadLine()); int x2 = 3, y2 = 2, shirina2 = 3, visota2 = 2; rectangle rect1 = new rectangle(x, y, shirina, visota); // Здесь менять на сколько перемещать и изменять. int izmx = 1, izmy = 1; int perx = 1, pery = 1; // Console.WriteLine("Введите комманду"); do { switch (Console.ReadLine()) { case "Perem": rect1.perem(perx, pery, ref x, ref y); break; case "Izm": rect1.izm(izmx, izmy, ref shirina, ref visota); break; case "Show": rect1.show(x, y, shirina, visota); break; case "Sovm": rect1.sovm(x, x2, y, y2, shirina, shirina2, visota, visota2); break; case "Exit": rectangle.brake = true; break; default: Console.WriteLine("Не, ну это не серьёзно, вводи!"); break; } } while (!rectangle.brake); } }
Решение задачи: «Составить описание класса прямоугольника со сторонами, параллельными осям координат»
textual
Листинг программы
public class Rectangle { public readonly int X,Y,Width,Height; public Point A { get { return new Point(X,Y);} public Point B { get { return new Point(X + Height,Y);} public Point C { get { return new Point(X,Y + Width);} public Point D { get { return new Point(X + Height,Y + Width);} public Rectangle(int x, int y, int width, int height) { X = x; Y = y; Width = width; Height = height; } public void Move(int dx, int dy) { X += dx; Y += dy; } ... }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д