Advertisement
Ansaid

Laba_1 part_1 (Калькулятор комплексных чисел)

Feb 20th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.77 KB | None | 0 0
  1. /*Калькулятор комплексных чисел, защита "от дурака*/
  2. #include "pch.h"
  3. #include <iostream>
  4. #include "locale.h"
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. struct T {
  10.     float x1;
  11.     float y1;
  12.     float x2;
  13.     float y2;
  14.     float alfa;
  15.     void sum();
  16.     void diff();
  17.     void pr();
  18.     void del();
  19.     void pr_alfa();
  20. };
  21.  
  22. float Enter();
  23.  
  24. int main() {
  25.     setlocale(LC_ALL, "Russian");
  26.     T numbers;
  27.     int choice;
  28.     string proverka;
  29.     cout << "Какую операцию хотите выполнить?\n1. Сложение комплексных чисел\n2. Вычитание комплексных чисел\n3. Умножение комплексных чисел\n4. Деление комплексных чисел\n5. Умножение комплексного числа на вещественное число\nВведите номер выбранной операции:  ";
  30.     again:
  31.     cin >> proverka;
  32.     if (proverka.length() != 1 || proverka[0] < '1' || proverka[0] > '5')
  33.     {
  34.         cout << "Ошибка ввода!\nВведите номер выбранной операции заново: ";
  35.         goto again;
  36.     }
  37.     choice = stoi(proverka);
  38.  
  39.     if (choice != 5)
  40.     {
  41.         cout << "\nАлгебраическая форма комплексного числа z = x + y*i\n" << endl;
  42.         cout << "Введите х для первого числа: ";
  43.         numbers.x1 = Enter();
  44.         cout << "Введите y для первого числа: ";
  45.         numbers.y1 = Enter();
  46.         cout << "Введите х для второго числа: ";
  47.         numbers.x2 = Enter();
  48.         cout << "Введите y для второго числа: ";
  49.         numbers.y2 = Enter();
  50.         switch (choice)
  51.         {
  52.         case 1:
  53.             numbers.sum();
  54.             break;
  55.         case 2:
  56.             numbers.diff();
  57.             break;
  58.         case 3:
  59.             numbers.pr();
  60.             break;
  61.         case 4:
  62.             numbers.del();
  63.             break;
  64.         }
  65.     }
  66.     else
  67.     {
  68.         cout << "Алгебраическая форма комплексного числа z = x + y*i" << endl;
  69.         cout << "Введите х для комплексного числа: ";
  70.         numbers.x1 = Enter();
  71.         cout << "Введите y для комплексного числа: ";
  72.         numbers.y1 = Enter();
  73.         cout << "Введите вещественное число на которе будете умножать: ";
  74.         numbers.alfa = Enter();
  75.         numbers.pr_alfa();
  76.     }
  77.     return 0;
  78. }
  79.  
  80. float Enter()
  81. {
  82.     string proverka;
  83.     bool indikator = true;
  84.     int k;
  85.     while (indikator)
  86.     {
  87.         indikator = false;
  88.         k = 0;
  89.         cin >> proverka;
  90.         if ((proverka[0] == '0') && (proverka[1] == '0'))
  91.             indikator = true;
  92.         if ((proverka[0] == '-') && proverka.length() == 1)
  93.             indikator = true;
  94.         if ((proverka[0] == '-') && (proverka[1] == '.'))
  95.             indikator = true;
  96.         if (((proverka[0] < '0') || (proverka[0] > '9')) && (proverka[0] != '-'))
  97.             indikator = true;
  98.         for (int i = 1; i < proverka.length(); i++)
  99.             if (proverka[i] == '.')
  100.                 k++;
  101.         for (int i = 1; i < proverka.length(); i++)
  102.             if (((proverka[i] < '0') || (proverka[i] > '9')) && (proverka[i] != '.'))
  103.                 indikator = true;
  104.         if (k > 1)
  105.             indikator = true;
  106.         for (int i = 1; i < proverka.length(); i++)
  107.             if (proverka[i] == '.')
  108.                 proverka[i] = ',';
  109.         if (indikator)
  110.             cerr << "Ошибка ввода!\nВведите число заново: ";
  111.     }
  112.     return stof(proverka);
  113. }
  114.  
  115. void T::sum()
  116. {
  117.     if (y1 + y2 >= 0)
  118.         cout << "\nСумма: " << x1 + x2 << "+" << y1 + y2 << "*i" << endl;
  119.     else
  120.         cout << "\nСумма: " << x1 + x2 << y1 + y2 << "*i" << endl;
  121. }
  122.  
  123. void T::diff()
  124. {
  125.     if (y1 - y2 >= 0)
  126.         cout << "\nРазность: " << x1 - x2 << "+" << y1 - y2 << "*i" << endl;
  127.     else
  128.         cout << "\nРазность: " << x1 - x2 << y1 - y2 << "*i" << endl;
  129. }
  130.  
  131. void T::pr()
  132. {
  133.     if (x1 * y2 + x2 * y1 >= 0)
  134.         cout << "\nПроизведение: " << x1 * x2 - y1 * y2 << "+" << x1 * y2 + x2 * y1 << "*i" << endl;
  135.     else
  136.         cout << "\nПроизведение: " << x1 * x2 - y1 * y2 << x1 * y2 + x2 * y1 << "*i" << endl;
  137. }
  138.  
  139. void T::del()
  140. {
  141.     if ((double)(x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) >= 0)
  142.         cout << "\nЧастное: " << (x1 * x2 + y1 * y2) / (x2 * x2 + y2 * y2) << "+" << (x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) << "*i" << endl;
  143.     else
  144.         cout << "\nЧастное: " << (x1 * x2 + y1 * y2) / (x2 * x2 + y2 * y2) << (x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) << "*i" << endl;
  145. }
  146.  
  147. void T::pr_alfa()
  148. {
  149.     if (y1 * alfa >= 0)
  150.         cout << "\nПроизведение: " <<  (x1 * alfa) << "+" << (y1 * alfa) << "*i" << endl;
  151.     else
  152.         cout << "\nПроизведение: " <<  (x1 * x2 - y1 * y2) << (x1 * y2 + x2 * y1) << "*i" << endl;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement