/
khazov
/
module2
Обзор
Документация
Войти
/
khazov
/
module2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task8_1/task8_1.cpp
99 строк
3 KB
HazovAV
добавлены решения по задачам
29 июл 2026, 14:44
29 июл 2026, 14:44
c6ff9de
Код
Авторство
О чём код?
#include <iostream> #include <string> #include <cassert> #include "Fraction.h" int main() { // Тест 1: Конструкторы и dump { Fraction f1(3, 4); Fraction f2(4, 5); assert(f1.dump() == "3/4"); assert(f2.dump() == "4/5"); } // Тест 2: Равенство и неравенство (разные дроби) { Fraction f1(4, 3); Fraction f2(6, 11); assert(!(f1 == f2)); assert(f1 != f2); assert(!(f1 < f2)); assert(f1 > f2); assert(!(f1 <= f2)); assert(f1 >= f2); } // Тест 3: Равенство дробей после сокращения (4/3 == 8/6) { Fraction f1(4, 3); Fraction f2(8, 6); assert(f1 == f2); assert(!(f1 != f2)); } // Тест 4: Арифметика { Fraction f1(3, 4); Fraction f2(4, 5); assert((f1 + f2).dump() == "31/20"); assert((f1 - f2).dump() == "-1/20"); assert((f1 * f2).dump() == "3/5"); assert((f1 / f2).dump() == "15/16"); } // Тест 5: Инкремент и декремент { Fraction f1(3, 4); Fraction f2(4, 5); Fraction tmp1 = ++f1; // f1 стало 7/4, tmp1 — ссылка на 7/4 assert(tmp1.dump() == "7/4"); // ++f1 вернуло ссылку на обновлённую дробь assert(f1.dump() == "7/4"); // f1 теперь 7/4 // Сценарий: ++3/4 * 4/5 = 7/5 // Это означает: (++f1) * f2 Fraction res1 = tmp1 * f2; assert(res1.dump() == "7/5"); // Постфиксный декремент: 7/4-- * 4/5 = 7/5, потом f1 = 3/4 Fraction old_f1 = f1--; // old_f1 = 7/4, f1 после декремента = 3/4 Fraction res2 = old_f1 * f2; assert(res2.dump() == "7/5"); assert(f1.dump() == "3/4"); } // Тест 6: Отрицательные дроби и нормализация { Fraction f(-3, -4); assert(f.dump() == "3/4"); // минус на минус даёт плюс Fraction g(3, -4); assert(g.dump() == "-3/4"); // минус переносится в числитель Fraction h(-3, 4); assert(h.dump() == "-3/4"); } // Тест 7: Унарный минус { Fraction f(3, 4); Fraction neg = -f; assert(neg.dump() == "-3/4"); } // Тест 8: Обработка нулевого знаменателя (должно выбросить исключение) try { Fraction bad(1, 0); assert(false); // Сюда не должны попасть } catch (const std::invalid_argument&) { // Ожидаемое поведение } std::cout << "All tests passed!" << std::endl; return EXIT_SUCCESS; }