Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Калькулятор комплексных чисел, защита "от дурака*/
- #include "pch.h"
- #include <iostream>
- #include "locale.h"
- #include <string>
- using namespace std;
- struct T {
- float x1;
- float y1;
- float x2;
- float y2;
- float alfa;
- void sum();
- void diff();
- void pr();
- void del();
- void pr_alfa();
- };
- float Enter();
- int main() {
- setlocale(LC_ALL, "Russian");
- T numbers;
- int choice;
- string proverka;
- cout << "Какую операцию хотите выполнить?\n1. Сложение комплексных чисел\n2. Вычитание комплексных чисел\n3. Умножение комплексных чисел\n4. Деление комплексных чисел\n5. Умножение комплексного числа на вещественное число\nВведите номер выбранной операции: ";
- again:
- cin >> proverka;
- if (proverka.length() != 1 || proverka[0] < '1' || proverka[0] > '5')
- {
- cout << "Ошибка ввода!\nВведите номер выбранной операции заново: ";
- goto again;
- }
- choice = stoi(proverka);
- if (choice != 5)
- {
- cout << "\nАлгебраическая форма комплексного числа z = x + y*i\n" << endl;
- cout << "Введите х для первого числа: ";
- numbers.x1 = Enter();
- cout << "Введите y для первого числа: ";
- numbers.y1 = Enter();
- cout << "Введите х для второго числа: ";
- numbers.x2 = Enter();
- cout << "Введите y для второго числа: ";
- numbers.y2 = Enter();
- switch (choice)
- {
- case 1:
- numbers.sum();
- break;
- case 2:
- numbers.diff();
- break;
- case 3:
- numbers.pr();
- break;
- case 4:
- numbers.del();
- break;
- }
- }
- else
- {
- cout << "Алгебраическая форма комплексного числа z = x + y*i" << endl;
- cout << "Введите х для комплексного числа: ";
- numbers.x1 = Enter();
- cout << "Введите y для комплексного числа: ";
- numbers.y1 = Enter();
- cout << "Введите вещественное число на которе будете умножать: ";
- numbers.alfa = Enter();
- numbers.pr_alfa();
- }
- return 0;
- }
- float Enter()
- {
- string proverka;
- bool indikator = true;
- int k;
- while (indikator)
- {
- indikator = false;
- k = 0;
- cin >> proverka;
- if ((proverka[0] == '0') && (proverka[1] == '0'))
- indikator = true;
- if ((proverka[0] == '-') && proverka.length() == 1)
- indikator = true;
- if ((proverka[0] == '-') && (proverka[1] == '.'))
- indikator = true;
- if (((proverka[0] < '0') || (proverka[0] > '9')) && (proverka[0] != '-'))
- indikator = true;
- for (int i = 1; i < proverka.length(); i++)
- if (proverka[i] == '.')
- k++;
- for (int i = 1; i < proverka.length(); i++)
- if (((proverka[i] < '0') || (proverka[i] > '9')) && (proverka[i] != '.'))
- indikator = true;
- if (k > 1)
- indikator = true;
- for (int i = 1; i < proverka.length(); i++)
- if (proverka[i] == '.')
- proverka[i] = ',';
- if (indikator)
- cerr << "Ошибка ввода!\nВведите число заново: ";
- }
- return stof(proverka);
- }
- void T::sum()
- {
- if (y1 + y2 >= 0)
- cout << "\nСумма: " << x1 + x2 << "+" << y1 + y2 << "*i" << endl;
- else
- cout << "\nСумма: " << x1 + x2 << y1 + y2 << "*i" << endl;
- }
- void T::diff()
- {
- if (y1 - y2 >= 0)
- cout << "\nРазность: " << x1 - x2 << "+" << y1 - y2 << "*i" << endl;
- else
- cout << "\nРазность: " << x1 - x2 << y1 - y2 << "*i" << endl;
- }
- void T::pr()
- {
- if (x1 * y2 + x2 * y1 >= 0)
- cout << "\nПроизведение: " << x1 * x2 - y1 * y2 << "+" << x1 * y2 + x2 * y1 << "*i" << endl;
- else
- cout << "\nПроизведение: " << x1 * x2 - y1 * y2 << x1 * y2 + x2 * y1 << "*i" << endl;
- }
- void T::del()
- {
- if ((double)(x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) >= 0)
- cout << "\nЧастное: " << (x1 * x2 + y1 * y2) / (x2 * x2 + y2 * y2) << "+" << (x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) << "*i" << endl;
- else
- cout << "\nЧастное: " << (x1 * x2 + y1 * y2) / (x2 * x2 + y2 * y2) << (x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2) << "*i" << endl;
- }
- void T::pr_alfa()
- {
- if (y1 * alfa >= 0)
- cout << "\nПроизведение: " << (x1 * alfa) << "+" << (y1 * alfa) << "*i" << endl;
- else
- cout << "\nПроизведение: " << (x1 * x2 - y1 * y2) << (x1 * y2 + x2 * y1) << "*i" << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement