/
haseew
/
Lab_4
Обзор
Документация
Войти
/
haseew
/
Lab_4
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.cpp
106 строк
4 KB
Egorchik
Lab_4
23 мар 2026, 14:20
23 мар 2026, 14:20
065d234
Код
Авторство
О чём код?
/** * кто выполнил: Буров Егор * что делает программа: демонстрирует работу ооп на c++ на примере классов * complex и rational * входные данные: ввод чисел с клавиатуры * выходные данные: результаты всех перегруженных операций на экран */ #include <iostream> #include "Complex.h" #include "Rational.h" using namespace std; int main() { // тестирование первлго. комплексные числа cout << "=== ZADANIE 1: Kompleksnye chisla ===" << endl; Complex c1, c2; // приглашение к вводу cout << "Vvedite c1 (dejstvitelnuju i mnimuju chasti cherez probel): "; cin >> c1; cout << "Vvedite c2 (dejstvitelnuju i mnimuju chasti cherez probel): "; cin >> c2; // контрольный вывод введенных данных cout << "\n[Kontrolnyj vyvod]: c1 = (" << c1 << "), c2 = (" << c2 << ")" << endl; // демонстрация конструктора копирования и присваивания Complex c_copy(c1); cout << "Konstruktor kopirovanija (kopija c1): " << c_copy << endl; Complex c_assign; c_assign = c2; cout << "Operator prisvaivanija (assign = c2): " << c_assign << endl; // арифметические тесты cout << "Slozhenie (c1 + c2): " << (c1 + c2) << endl; cout << "Vychitanie (c1 - c2): " << (c1 - c2) << endl; cout << "Umnozhenie (c1 * c2): " << (c1 * c2) << endl; cout << "Delenie (c1 / c2): " << (c1 / c2) << endl; // инкременты и декременты Complex c_step = c1; cout << "Prefiksnyj ++: " << ++c_step << endl; cout << "Postfiksnyj ++: " << c_step++ << " (posle shaga: " << c_step << ")" << endl; // логическое сравнение по модулю cout << "Modul c1: " << c1.abs() << " | Modul c2: " << c2.abs() << endl; cout << "c1 == c2: " << (c1 == c2 ? "Da" : "Net") << endl; cout << "c1 < c2: " << (c1 < c2 ? "Da" : "Net") << endl; // тестирование второго. рациональные дроби cout << "\n=== ZADANIE 2: Racionalnye drobi ===" << endl; int n1, d1, n2, d2; cout << "Drob 1. Vvedite chislitel: "; cin >> n1; // не пускаем дальше, пока знаменатель равен 0 while (true) { cout << "Drob 1. Vvedite znamenatel (ne 0!): "; cin >> d1; if (d1 != 0) break; cout << "[Oshibka!] Znamenatel ne mozhet byt nulem." << endl; } cout << "Drob 2. Vvedite chislitel: "; cin >> n2; while (true) { cout << "Drob 2. Vvedite znamenatel (ne 0!): "; cin >> d2; if (d2 != 0) break; cout << "[Oshibka!] Znamenatel ne mozhet byt nulem." << endl; } Rational r1(n1, d1); Rational r2(n2, d2); // контрольный вывод в несократимом виде cout << "\n[Kontrolnyj vyvod (sokrashchennyj vid)]:" << endl; cout << "r1 = " << r1 << " (ch: " << r1.Numerator() << ", z: " << r1.Denominator() << ")" << endl; cout << "r2 = " << r2 << " (ch: " << r2.Numerator() << ", z: " << r2.Denominator() << ")" << endl; // проверка унарных операторов cout << "Unarnyj pljus (+r1): " << (+r1) << endl; cout << "Unarnyj minus (-r1): " << (-r1) << endl; // проверка бинарных операций с дробями и встроенным int cout << "r1 + r2 = " << (r1 + r2) << endl; cout << "r1 * 5 = " << (r1 * 5) << " (rabota s int sprava)" << endl; cout << "5 + r1 = " << (5 + r1) << " (rabota s int sleva)" << endl; cout << "r1 / r2 = " << (r1 / r2) << endl; // проверка операторов со знаками присваивания Rational r_calc = r1; r_calc += r2; cout << "Operator += (r1 += r2): " << r_calc << endl; // проверка равенства cout << "r1 == r2: " << (r1 == r2 ? "Ravny" : "Ne ravny") << endl; return 0; }