Savelyev_Vyacheslav

OOP L5

Aug 5th, 2021 (edited)
702
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ООП_5.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <iostream>
  5. #include <iomanip>
  6. #include <ctype.h>
  7. #include <string.h>
  8. using namespace std;
  9.  
  10. class Coord
  11. {  
  12. public:
  13.     int delta;
  14.     int x;
  15.     int y;
  16.     void operator ++()
  17.     {
  18.         x = x + delta;
  19.         y = y + delta;
  20.     }
  21.     friend void operator !(Coord& class_coor);
  22.     Coord& operator+(Coord& class_coor2)
  23.     {
  24.         this->x = this->x + class_coor2.x;
  25.         cout << "Диструктор класса Coord x"<< this->x << endl;
  26.         this->y = this->y + class_coor2.y;
  27.         cout << "Диструктор класса Coord y" << this->y << endl;
  28.         this;
  29.         return *this;
  30.     }
  31.     friend void operator >=(Coord& class_coor1, Coord& class_coor2);
  32.     friend ostream& operator <<(ostream& out, Coord& class_coor);
  33.     friend istream& operator >>(istream& in, Coord& class_coor);
  34.     ~Coord()
  35.     {
  36.             cout << "Диструктор класса Coord" << endl;
  37.     }
  38. };
  39.  
  40. void operator !(Coord& class_coor)
  41. {
  42.    
  43.     if (class_coor.x == 0) {
  44.         cout << "Координата 'x' равна нулю" << endl;
  45.     }
  46.     else {
  47.         cout << "Координата 'x' не 0" << endl;
  48.     }
  49.     if (class_coor.y == 0) {
  50.         cout << "Координата 'y' равна нулю" << endl;
  51.     }
  52.     else {
  53.         cout << "Координата 'y' не 0" << endl;
  54.     }
  55.  
  56. }
  57.  
  58. void operator >=(Coord& class_coor1, Coord& class_coor2)
  59. {
  60.     int num1 = sqrt(class_coor1.y * class_coor1.x);
  61.     int num2 = sqrt(class_coor2.y * class_coor2.x);
  62.     if (num1 > num2) {
  63.         cout << "В первом классе среднее квадротичное значение координат больше чем во втором" << endl;
  64.     }
  65.     else {
  66.         cout << "Во втором классе среднее квадротичное значение координат больше чем в первом" << endl;
  67.     }
  68. }
  69.  
  70. ostream& operator <<(ostream& out, Coord& class_coor)
  71. {
  72.     out << "'x' = " << class_coor.x << " " << endl;
  73.     out << "'y' = " << class_coor.y << " " << endl;
  74.     return out;
  75. }
  76. istream& operator >>(istream& in, Coord& class_coor)
  77. {
  78.     cout << "Введите x:" << endl;
  79.     in >> class_coor.x;
  80.     cout << "Введите y:" << endl;
  81.     in >> class_coor.y;
  82.     return in;
  83. }
  84.  
  85. int main()
  86. {
  87.     setlocale(LC_ALL, "Russian");
  88. int delta2;
  89.     while (1)
  90.     {
  91.         cout << "Введите цифру:" << endl;
  92.         cout << "0- Установить дельта" << endl;
  93.         cout << "1- Оператор ++" << endl;
  94.         cout << "2- Оператор !" << endl;
  95.         cout << "3- Оператор +" << endl;
  96.         cout << "4- Оператор >=" << endl;
  97.         cout << "5- Выход" << endl;
  98.         int i;
  99.         Coord class_coor1;
  100.         Coord class_coor2;
  101.         Coord class_coor3;
  102.         cin >> i;
  103.        
  104.         switch (i)
  105.         {
  106.         case 0:
  107.         {
  108.             cout << "Установить дельта:" << endl;
  109.             cin >> delta2;
  110.             break;
  111.         }
  112.         case 1:
  113.         {
  114.             cin >> class_coor1;
  115.             class_coor1.delta = delta2;
  116.             ++class_coor1;
  117.             cout << "x+:" << class_coor1.x << endl;
  118.             cout << "y+:" << class_coor1.y << endl;
  119.             break;
  120.         }
  121.         case 2:
  122.         {
  123.             cin >> class_coor2;
  124.             class_coor2.delta = delta2;
  125.             !class_coor2;
  126.             break;
  127.         }
  128.         case 3:
  129.         {
  130.             cin >> class_coor3;
  131.             class_coor3.delta = delta2;
  132.             class_coor3 + class_coor2;
  133.             cout << "Вывод сложения классов class+class.n:" << endl;
  134.             cout << class_coor3 << endl;
  135.             break;
  136.         }
  137.         case 4:
  138.         {
  139.             class_coor1 >= class_coor2;
  140.             break;
  141.         }
  142.         case 5:
  143.         {
  144.             return 0;
  145.         }
  146.         }
  147.     }
  148. }
  149.  
  150.  
  151. // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
  152. // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
  153.  
  154. // Советы по началу работы
  155. //   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
  156. //   2. В окне Team Explorer можно подключиться к системе управления версиями.
  157. //   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
  158. //   4. В окне "Список ошибок" можно просматривать ошибки.
  159. //   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
  160. //   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
  161.  
RAW Paste Data