Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <conio.h>
- #include <string>
- using namespace std;
- class Complex {
- double a0, b0;
- public:
- Complex()
- {
- a0 = b0 = 0;
- }
- Complex(double real, double imaginary)
- {
- a0 = real;
- b0 = imaginary;
- }
- void set_a(double real)
- {
- a0 = real;
- }
- void set_b(double imaginary)
- {
- b0 = imaginary;
- }
- double get_a()
- {
- return a0;
- }
- double get_b()
- {
- return b0;
- }
- string toString()
- {
- if (b0 == 1)
- return to_string(a0) + '+' + 'i';
- else if (b0 == -1)
- return to_string(a0) + '-' + 'i';
- else if (b0 >= 0)
- return to_string(a0) + '+' + to_string(b0) + 'i';
- else
- return to_string(a0) + '-' + to_string(abs(b0)) + 'i';
- }
- Complex add(Complex B)
- {
- Complex tmp;
- tmp.a0 = a0 + B.a0;
- tmp.b0 = b0 + B.b0;
- return tmp;
- }
- Complex sub(Complex A, Complex B)
- {
- Complex tmp;
- tmp.a0 = A.a0 - B.a0;
- tmp.b0 = A.b0 - B.b0;
- return tmp;
- }
- Complex mul(Complex A, Complex B)
- {
- Complex tmp;
- tmp.a0 = A.a0 * B.a0 - A.b0 * B.b0;
- tmp.b0 = A.a0 * B.b0 + A.b0 * B.a0;
- return tmp;
- }
- Complex div(Complex A, Complex B)
- {
- Complex tmp;
- tmp.a0 = (A.a0 * B.a0 + A.b0 * B.b0) / (B.a0 * B.a0 + B.b0 * B.b0);
- tmp.b0 = (B.a0 * A.b0 - A.a0 * B.b0) / (B.a0 * B.a0 + B.b0 * B.b0);
- return tmp;
- }
- bool equ(Complex A, Complex B)
- {
- return (A.a0 == B.a0 && A.b0 == B.b0);
- }
- Complex conj()
- {
- Complex tmp;
- tmp.a0 = a0;
- tmp.b0 = -b0;
- return tmp;
- }
- };
- int main()
- {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- Complex A, B, C;
- double a, b, c, d;
- int q;
- do
- {
- cout << "1. Сложение" << endl;
- cout << "2. Вычитание" << endl;
- cout << "3. Умножение" << endl;
- cout << "4. Деление" << endl;
- cout << "5. Сравнение" << endl;
- cout << "6. Сопряженное число" << endl;
- cout << "0. Выход" << endl;
- cin >> q;
- if (q == 6)
- {
- cout << "\nВведите действительную часть первого комплексного числа:" << endl;
- cin >> a;
- cout << "Введите мнимую часть первого комплексного числа:" << endl;
- cin >> b;
- A.set_a(a);
- A.set_b(b);
- cout << "Получено следующее комплексное число:" << endl;
- cout << A.toString() << endl;
- cout << "\nИсходное комплексное число:" << endl;
- cout << A.toString() << endl;
- C = A.conj();
- cout << "Сопряженное комплексное число:" << endl;
- cout << C.toString() << endl;
- }
- else if (q > 0 && q < 6)
- {
- cout << "\nВведите действительную часть первого комплексного числа:" << endl;
- cin >> a;
- cout << "Введите мнимую часть первого комплексного числа:" << endl;
- cin >> b;
- A.set_a(a);
- A.set_b(b);
- cout << "Получено следующее комплексное число:" << endl;
- cout << A.toString() << endl;
- cout << "Введите действительную часть второго комплексного числа:" << endl;
- cin >> c;
- cout << "Введите мнимую часть второго комплексного числа:" << endl;
- cin >> d;
- Complex B(c, d);
- cout << "Получено следующее комплексное число:" << endl;
- cout << B.toString() << endl;
- switch (q)
- {
- case 1:
- cout << "\nПолучено следующее комплексное число:" << endl;
- C = A.add(B);
- cout << C.toString() << endl;
- break;
- case 2:
- cout << "\nПолучено следующее комплексное число:" << endl;
- C = A.sub(A, B);
- cout << C.toString() << endl;
- break;
- case 3:
- cout << "\nПолучено следующее комплексное число:" << endl;
- C = A.mul(A, B);
- cout << C.toString() << endl;
- break;
- case 4:
- cout << "\nПолучено следующее комплексное число:" << endl;
- C = A.div(A, B);
- cout << C.toString() << endl;
- break;
- case 5:
- if (A.equ(A, B))
- cout << "Равны" << endl;
- else cout << "Не равны" << endl;
- break;
- defaut: break;
- }
- }
- } while (q != 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement