Advertisement
Bibodui

ООП Лаба 1

Dec 28th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <conio.h>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. class Complex {
  9.     double a0, b0;
  10. public:
  11.     Complex()
  12.     {
  13.         a0 = b0 = 0;
  14.     }
  15.     Complex(double real, double imaginary)
  16.     {
  17.         a0 = real;
  18.         b0 = imaginary;
  19.     }
  20.     void set_a(double real)
  21.     {
  22.         a0 = real;
  23.     }
  24.  
  25.     void set_b(double imaginary)
  26.     {
  27.         b0 = imaginary;
  28.     }
  29.  
  30.     double get_a()
  31.     {
  32.         return a0;
  33.     }
  34.  
  35.     double get_b()
  36.     {
  37.         return b0;
  38.     }
  39.  
  40.     string toString()
  41.     {
  42.         if (b0 == 1)
  43.             return  to_string(a0) + '+' + 'i';
  44.         else if (b0 == -1)
  45.             return  to_string(a0) + '-' + 'i';
  46.         else if (b0 >= 0)
  47.             return  to_string(a0) + '+' + to_string(b0) + 'i';
  48.         else
  49.             return  to_string(a0) + '-' + to_string(abs(b0)) + 'i';
  50.     }
  51.  
  52.     Complex add(Complex B)
  53.     {
  54.         Complex tmp;
  55.         tmp.a0 = a0 + B.a0;
  56.         tmp.b0 = b0 + B.b0;
  57.         return tmp;
  58.     }
  59.  
  60.     Complex sub(Complex A, Complex B)
  61.     {
  62.         Complex tmp;
  63.         tmp.a0 = A.a0 - B.a0;
  64.         tmp.b0 = A.b0 - B.b0;
  65.         return tmp;
  66.     }
  67.  
  68.     Complex mul(Complex A, Complex B)
  69.     {
  70.         Complex tmp;
  71.         tmp.a0 = A.a0 * B.a0 - A.b0 * B.b0;
  72.         tmp.b0 = A.a0 * B.b0 + A.b0 * B.a0;
  73.         return tmp;
  74.     }
  75.  
  76.     Complex div(Complex A, Complex B)
  77.     {
  78.         Complex tmp;
  79.         tmp.a0 = (A.a0 * B.a0 + A.b0 * B.b0) / (B.a0 * B.a0 + B.b0 * B.b0);
  80.         tmp.b0 = (B.a0 * A.b0 - A.a0 * B.b0) / (B.a0 * B.a0 + B.b0 * B.b0);
  81.         return tmp;
  82.     }
  83.  
  84.     bool equ(Complex A, Complex B)
  85.     {
  86.         return (A.a0 == B.a0 && A.b0 == B.b0);
  87.     }
  88.  
  89.     Complex conj()
  90.     {
  91.         Complex tmp;
  92.         tmp.a0 = a0;
  93.         tmp.b0 = -b0;
  94.         return tmp;
  95.     }
  96. };
  97.  
  98. int main()
  99. {
  100.     SetConsoleOutputCP(1251);
  101.     SetConsoleCP(1251);
  102.  
  103.     Complex A, B, C;
  104.     double a, b, c, d;
  105.        
  106.     int q;
  107.  
  108.     do
  109.     {
  110.         cout << "1. Сложение" << endl;
  111.         cout << "2. Вычитание" << endl;
  112.         cout << "3. Умножение" << endl;
  113.         cout << "4. Деление" << endl;
  114.         cout << "5. Сравнение" << endl;
  115.         cout << "6. Сопряженное число" << endl;
  116.         cout << "0. Выход" << endl;
  117.  
  118.         cin >> q;
  119.  
  120.         if (q == 6)
  121.         {
  122.             cout << "\nВведите действительную часть первого комплексного числа:" << endl;
  123.             cin >> a;
  124.             cout << "Введите мнимую часть первого комплексного числа:" << endl;
  125.             cin >> b;
  126.             A.set_a(a);
  127.             A.set_b(b);
  128.             cout << "Получено следующее комплексное число:" << endl;
  129.             cout << A.toString() << endl;
  130.             cout << "\nИсходное комплексное число:" << endl;
  131.             cout << A.toString() << endl;
  132.             C = A.conj();
  133.             cout << "Сопряженное комплексное число:" << endl;
  134.             cout << C.toString() << endl;
  135.         }
  136.         else if (q > 0 && q < 6)
  137.         {
  138.             cout << "\nВведите действительную часть первого комплексного числа:" << endl;
  139.             cin >> a;
  140.             cout << "Введите мнимую часть первого комплексного числа:" << endl;
  141.             cin >> b;
  142.             A.set_a(a);
  143.             A.set_b(b);
  144.             cout << "Получено следующее комплексное число:" << endl;
  145.             cout << A.toString() << endl;
  146.             cout << "Введите действительную часть второго комплексного числа:" << endl;
  147.             cin >> c;
  148.             cout << "Введите мнимую часть второго комплексного числа:" << endl;
  149.             cin >> d;
  150.             Complex B(c, d);
  151.             cout << "Получено следующее комплексное число:" << endl;
  152.             cout << B.toString() << endl;
  153.  
  154.             switch (q)
  155.             {
  156.             case 1:
  157.                 cout << "\nПолучено следующее комплексное число:" << endl;
  158.                 C = A.add(B);
  159.                 cout << C.toString() << endl;
  160.                 break;
  161.             case 2:
  162.                 cout << "\nПолучено следующее комплексное число:" << endl;
  163.                 C = A.sub(A, B);
  164.                 cout << C.toString() << endl;
  165.                 break;
  166.             case 3:
  167.                 cout << "\nПолучено следующее комплексное число:" << endl;
  168.                 C = A.mul(A, B);
  169.                 cout << C.toString() << endl;
  170.                 break;
  171.             case 4:
  172.                 cout << "\nПолучено следующее комплексное число:" << endl;
  173.                 C = A.div(A, B);
  174.                 cout << C.toString() << endl;
  175.                 break;
  176.             case 5:
  177.                 if (A.equ(A, B))
  178.                     cout << "Равны" << endl;
  179.                 else cout << "Не равны" << endl;
  180.                 break;
  181.  
  182.             defaut: break;
  183.             }
  184.         }
  185.     } while (q != 0);
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement