Advertisement
Guest User

Untitled

a guest
May 26th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.43 KB | None | 0 0
  1. #include <conio.h>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <ctime>
  5.  
  6. using namespace std;
  7.  
  8. class Rectangle {
  9.     private:
  10.         double x1, x2, y1, y2, dx, dy,r;
  11.     public:
  12.         // Конструктор с 4 параметрами
  13.         Rectangle(double a, double b, double c, double d) : x1(a), x2(b), y1(c), y2(d)  {   }
  14.         // Конструктор по умолчанию
  15.         Rectangle(): x1(2), x2(5), y1(2), y2(0) {   }
  16.         ~Rectangle() { } // Деструктор
  17.  
  18.         void Input(); // метод ввода с клавиатуры
  19.         void Result(); // метод вывода на экран
  20.         void Peremeshenie(); // перемещение
  21.         void size(); // изменение размера
  22.         void Minimal(); // построение минимального
  23.         void Cross(); // пересечение 2 прямоугольников
  24. };
  25. void Rectangle::Input() {
  26.     cout << "Введите координату х левых точек" << endl;
  27.     cin >> x1;
  28.     cout << "Введите координату y верхних точек" << endl;
  29.     cin >> y1;
  30.     cout << "Введите координату х правых точек" << endl;
  31.     cin >> x2;
  32.     cout << "Введите координату y нижних точек" << endl;
  33.     cin >> y2;
  34. }
  35.  
  36. void Rectangle::Result() {
  37.     cout << "Вы ввели следующие координаты прямоугольника:" << endl;
  38.     cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
  39.     cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
  40.     cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
  41.     cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
  42. }
  43. void Rectangle::Peremeshenie() {
  44.     cout << " На сколько единиц вы хотите переместить прямоугольник по оси X ?" << endl;
  45.     cin >> dx;
  46.     cout << " На сколько единиц вы хотите переместить прямоугольник по оси Y ?" << endl;
  47.     cin >> dy;
  48.     cout << "Получились следующие координаты прямоугольника:" << endl;
  49.     cout << " A:" << "(" << x1+dx << "," << y1+dy << ")" << endl;
  50.     cout << " B:" << "(" << x2+dx << "," << y1+dy << ")" << endl;
  51.     cout << " C:" << "(" << x2+dx << "," << y2+dy << ")" << endl;
  52.     cout << " D:" << "(" << x1+dx << "," << y2+dy << ")" << endl;
  53. }
  54.  
  55. void Rectangle::size() {
  56.     cout << " Во сколько раз изменяем размер прямоугольника ?" << endl;
  57.     cin >> r;
  58.     cout << "Получились следующие координаты прямоугольника:" << endl;
  59.     cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
  60.     cout << " B:" << "(" << x2*r << "," << y1 << ")" << endl;
  61.     cout << " C:" << "(" << x2*r << "," << y2 << ")" << endl;
  62.     cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
  63.  
  64. }
  65. void Rectangle::Minimal() {
  66.     double x3 , x4 , y3 , y4 , x_min = x1, x_max = x1, y_min = y1,y_max = y1;
  67.     cout << " 2 прямоугольник:" << endl;
  68.     cout << "Введите координату х левых точек" << endl;
  69.     cin >> x3;
  70.     cout << "Введите координату y верхних точек" << endl;
  71.     cin >> y3;
  72.     cout << "Введите координату х правых точек" << endl;
  73.     cin >> x4;
  74.     cout << "Введите координату y нижних точек" << endl;
  75.     cin >> y4;
  76.     cout << endl;
  77.     cout << "Вы ввели следующие координаты 1 прямоугольника:" << endl;
  78.     cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
  79.     cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
  80.     cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
  81.     cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
  82.     cout << endl;
  83.     cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl;
  84.     cout << " A:" << "(" << x3 << "," << y3 << ")" << endl;
  85.     cout << " B:" << "(" << x4 << "," << y3 << ")" << endl;
  86.     cout << " C:" << "(" << x4 << "," << y4 << ")" << endl;
  87.     cout << " D:" << "(" << x3 << "," << y4 << ")" << endl;
  88.     cout << endl;
  89.     double A[4]= {x1,x2,x3,x4}, B[4]= {y1,y2,y3,y4};
  90.     for(int i = 0; i < 4; i ++)
  91.     {
  92.         if(x_max < A[i])
  93.         {
  94.             x_max = A[i];
  95.         }
  96.     if(y_max < B[i])
  97.         {
  98.             y_max = B[i];
  99.         }
  100.     if(x_min > A[i])
  101.         {
  102.             x_min = A[i];
  103.         }
  104.     if(y_min > B[i])
  105.         {
  106.             y_min = B[i];
  107.         }
  108.     }
  109.     cout <<" Наименьший прямоугольник содержащий оба предыдущих имеет следующие координаты: " << endl;
  110.     cout << " A:" << "(" << x_min << "," << y_max << ")" << endl;
  111.     cout << " B:" << "(" << x_max << "," << y_max << ")" << endl;
  112.     cout << " C:" << "(" << x_max << "," << y_min << ")" << endl;
  113.     cout << " D:" << "(" << x_min << "," << y_min << ")" << endl;
  114. }
  115. void Rectangle::Cross() {
  116.     double x3 , x4 , y3 , y4 , x_min = x1, x_max = x1, y_min = y1,y_max = y1, x1_sred,x2_sred,y1_sred,y2_sred;
  117.     cout << " 2 прямоугольник:" << endl;
  118.     cout << "Введите координату х левых точек" << endl;
  119.     cin >> x3;
  120.     cout << "Введите координату y верхних точек" << endl;
  121.     cin >> y3;
  122.     cout << "Введите координату х правых точек" << endl;
  123.     cin >> x4;
  124.     cout << "Введите координату y нижних точек" << endl;
  125.     cin >> y4;
  126.     cout << endl;
  127.     cout << "Вы ввели следующие координаты 1 прямоугольника:" << endl;
  128.     cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
  129.     cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
  130.     cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
  131.     cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
  132.     cout << endl;
  133.     cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl;
  134.     cout << " A:" << "(" << x3 << "," << y3 << ")" << endl;
  135.     cout << " B:" << "(" << x4 << "," << y3 << ")" << endl;
  136.     cout << " C:" << "(" << x4 << "," << y4 << ")" << endl;
  137.     cout << " D:" << "(" << x3 << "," << y4 << ")" << endl;
  138.     cout << endl;
  139.     double A[4]= {x1,x2,x3,x4}, B[4]= {y1,y2,y3,y4};
  140.     for(int i = 0; i < 4; i ++)
  141.     {
  142.         if(x_max < A[i])
  143.         {
  144.             x_max = A[i];
  145.         }
  146.     if(y_max < B[i])
  147.         {
  148.             y_max = B[i];
  149.         }
  150.     if(x_min > A[i])
  151.         {
  152.             x_min = A[i];
  153.         }
  154.     if(y_min > B[i])
  155.         {
  156.             y_min = B[i];
  157.         }
  158.     }
  159.  
  160.  
  161.     for(int i = 0; i < 4; i ++)
  162.     {
  163.         if((A[i] != x_max) && (A[i] != x_min))
  164.         {
  165.             x1_sred = A[i];
  166.             break;
  167.         }
  168.     }
  169.     for(int i = 0; i < 4; i ++)
  170.     {
  171.         if((A[i] != x_max) && (A[i] != x_min) && (A[i] != x1_sred))
  172.         {
  173.             x2_sred = A[i];
  174.             break;
  175.         }
  176.     }
  177.     for(int i = 0; i < 4; i ++)
  178.     {
  179.         if((B[i] != y_max) && (B[i] != y_min))
  180.         {
  181.             y1_sred = B[i];
  182.             break;
  183.         }
  184.     }
  185.     for(int i = 0; i < 4; i ++)
  186.     {
  187.         if((B[i] != y_max) && (B[i] != y_min) && (B[i] != y1_sred))
  188.         {
  189.             y2_sred = B[i];
  190.             break;
  191.         }
  192.     }
  193.         cout <<" Прямоугольник на пересечении двух предыдущих имеет следующие координаты: " << endl;
  194. cout << " A:" << "(" << x1_sred << "," << y2_sred << ")" << endl;
  195. cout << " B:" << "(" << x2_sred << "," << y2_sred << ")" << endl;
  196. cout << " C:" << "(" << x2_sred << "," << y1_sred << ")" << endl;
  197. cout << " D:" << "(" << x1_sred << "," << y1_sred << ")" << endl;
  198.  
  199. }
  200. int main()
  201. {
  202.     setlocale(LC_ALL, "Russian");
  203.     cout << "Прямоугольники \n"
  204.         "Справка: \n 1 - Ввод данных \n 2 - Вывод \n 3 - Перемещение \n 4 - изменение размера\n"
  205.         " 5 - Минимальный прямоугольник содержащий 2 заданных\n 6 - Прямоугольник получившийся на пересечении 2 заданных\n 0 - выход\n" << endl;
  206.     Rectangle ObjectA; // Создаем объект без параметров, то есть будет использован конструктор по умолчанию
  207.     char Control;
  208.         cout << ">";
  209.         cin >> Control;
  210.  
  211.  
  212.         switch (Control)
  213.         {
  214.  
  215.             case '1':
  216.                 ObjectA.Input();
  217.                 cout << ">";
  218.                 cin >> Control;
  219.             case '2':
  220.                 ObjectA.Result();
  221.                 cout << ">";
  222.                 cin >> Control;
  223.             case '3':
  224.                 ObjectA.Peremeshenie();
  225.                 cout << ">";
  226.                 cin >> Control;
  227.             case '4':
  228.                 ObjectA.size();
  229.                 cout << ">";
  230.                 cin >> Control;
  231.             case '5':
  232.                 ObjectA.Minimal();
  233.                 cout << ">";
  234.                 cin >> Control;
  235.             case '6':
  236.                 ObjectA.Cross();
  237.                 cout << ">";
  238.                 cin >> Control;
  239.             case '0': break;
  240.         }
  241.  
  242. return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement