aLT22

4semlab3 (C++) KRISTINA'S LAB

Apr 28th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.49 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Triad {
  6.     protected:
  7.         int x, y, z;
  8.     public:
  9.         Triad() {
  10.             x = y = z = 0;
  11.         }
  12.         Triad(int X, int Y, int Z) {
  13.             x = X;
  14.             y = Y;
  15.             z = Z;
  16.         }
  17.         bool isEqual(Triad t) {
  18.             if (x == t.x && y == t.y && z == t.z) {
  19.                 return true;
  20.             }
  21.             return false;
  22.         }
  23.         Triad operator+ (int t) {
  24.             Triad result;
  25.             result.x = x + t;
  26.             result.y = y + t;
  27.             result.z = z + t;
  28.             return result;
  29.         }
  30.         Triad operator* (int t) {
  31.             Triad result;
  32.             result.x = x * t;
  33.             result.y = y * t;
  34.             result.z = z * t;
  35.             return result;
  36.         }
  37.         void show() {
  38.             cout << "Ваша тройка чисел: " << x << ' ' << y << ' ' << z << endl;
  39.         }
  40. };
  41.  
  42. class Vector3D : public Triad {
  43.     public:
  44.         Vector3D() {
  45.             x = y = z = 0;
  46.         }
  47.         Vector3D (int X, int Y, int Z) {
  48.             x = X;
  49.             y = Y;
  50.             z = Z;
  51.         }
  52.         // Сложение двух векторов
  53.         Vector3D operator+ (Vector3D t) {
  54.             Vector3D result;
  55.             result.x = x + t.x;
  56.             result.y = y + t.y;
  57.             result.z = z + t.z;
  58.             return result;
  59.         }
  60.         // Скалярное произведение векторов
  61.         int operator* (Vector3D t) {
  62.             int result;
  63.             result = x * t.x + y * t.y + z * t.z;
  64.             return result;
  65.         }
  66.         void show() {
  67.             cout << "Ваш вектор: " << x << ' ' << y << ' ' << z << endl;
  68.         }
  69. };
  70.  
  71. int main() {
  72.     setlocale(LC_ALL, "Russian");
  73.     cout << "Введите тройку чисел (через пробел): ";
  74.     int x, y, z;
  75.     cin >> x >> y >> z;
  76.     cout << endl;
  77.     Triad a(x, y, z); Vector3D b(x, y, z);
  78.     cout << "Выберите, с чем хотите работать: (1 - тройка чисел, 2 - вектор, 3 - вернуться к вводу): ";
  79.     char choice;
  80.     cin >> choice;
  81.     if (choice == '1') {
  82.         a.show();
  83.         cout << "Выберите, что хотите сделать с Триадой: (\'*\' - увеличить в n раз, \'+\' - увеличить на n, \'?\' - проверить на равенство): ";
  84.         cin >> choice;
  85.         int count, k, l, m;
  86.         if (choice == '?') {
  87.             cout << "Введите новую триаду, с которой сравнивать: ";
  88.             cin >> k >> l >> m;
  89.             Triad c(k, l, m);
  90.             if (a.isEqual(c)) {
  91.                     cout << "Триады равны\n";
  92.             } else
  93.                 cout << "Не равны!\n";
  94.         }
  95.         Triad result;
  96.         switch (choice) {
  97.             case('*'):
  98.                 cout << "Введите в сколько раз увеличить триаду: ";
  99.                 cin >> count;
  100.                 result = a * count;
  101.                 result.show();
  102.                 break;
  103.             case('+'):
  104.                 cout << "Введите на сколько увеличить триаду: ";
  105.                 cin >> count;
  106.                 result = a + count;
  107.                 result.show();
  108.                 break;
  109.         }
  110.     } else if (choice == '2') {
  111.         b.show();
  112.         cout << "Выберите, что хотите сделать с вектором: (\'*\' - скалярное произведение, \'+\' - сложить два вектора: ";
  113.         cin >> choice;
  114.         cout << "Введите второй вектор: ";
  115.         int q, w, e;
  116.         cin >> q >> w >> e;
  117.         Vector3D c(q, w, e);
  118.         int result;
  119.         Vector3D result_vec;
  120.         switch (choice) {
  121.             case('*'):
  122.                 result = b * c;
  123.                 cout << result << endl;
  124.                 break;
  125.             case('+'):
  126.                 result_vec = b + c;
  127.                 result_vec.show();
  128.                 break;
  129.         }
  130.     } else {
  131.         main();
  132.     }
  133.     char final_choice;
  134.     cout << "Чтобы продолжить работу, нажмите 1: "; cin >> final_choice;
  135.     if (final_choice == '1') {
  136.         main();
  137.     } else {
  138.         system("pause");
  139.         return 0;
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment