/
ArtT
/
Netology
Обзор
Документация
Войти
/
ArtT
/
Netology
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Part2/Task_2_8_2/Task_2_8_2.cpp
129 строк
4 KB
ArtT
Добавил восьмое задание
06 дек 2025, 12:14
06 дек 2025, 12:14
fa3645d
Код
Авторство
О чём код?
#include <iostream> #include <string> #include <numeric> class Fraction { private: int numerator_; int denominator_; public: Fraction(int numerator, int denominator) { int gcd = std::gcd(numerator, denominator); numerator_ = numerator / gcd; denominator_ = denominator / gcd; } bool operator==(Fraction& f2) { if (this->numerator_ == f2.numerator_ && this->denominator_ == f2.denominator_) return true; else return false; } bool operator!=(Fraction& f2) { if (this->numerator_ == f2.numerator_ && this->denominator_ == f2.denominator_) return false; else return true; } bool operator<(Fraction& f2) { if (this->numerator_ < f2.numerator_) return true; else if (this->numerator_ == f2.numerator_ && this->denominator_ < f2.denominator_) return true; else return false; } bool operator>(Fraction& f2) { if (this->numerator_ > f2.numerator_) return true; else if (this->numerator_ == f2.numerator_ && this->denominator_ > f2.denominator_) return true; else return false; } bool operator<=(Fraction& f2) { if (this->numerator_ < f2.numerator_) return true; else if (this->numerator_ == f2.numerator_ && this->denominator_ <= f2.denominator_) return true; else return false; } bool operator>=(Fraction& f2) { if (this->numerator_ > f2.numerator_) return true; else if (this->numerator_ == f2.numerator_ && this->denominator_ >= f2.denominator_) return true; else return false; } Fraction operator+(Fraction& f2) { return Fraction((this->numerator_ * f2.denominator_) + (this->denominator_ * f2.numerator_), (this->denominator_ * f2.denominator_)); } Fraction operator-(Fraction& f2) { return Fraction((this->numerator_ * f2.denominator_) - (this->denominator_ * f2.numerator_), (this->denominator_ * f2.denominator_)); } Fraction operator*(Fraction& f2) { return Fraction((this->numerator_ * f2.numerator_), (this->denominator_ * f2.denominator_)); } Fraction operator/(Fraction& f2) { return Fraction((this->numerator_ * f2.denominator_), (this->denominator_ * f2.numerator_)); } Fraction operator-() { return Fraction(-this->numerator_ , this->denominator_); } Fraction& operator++() { numerator_ += denominator_; return *this; } Fraction operator++(int) { Fraction temporary{ *this }; ++(*this); return temporary; } Fraction& operator--() { numerator_ -= denominator_; return *this; } Fraction operator--(int) { Fraction temporary{ *this }; --(*this); return temporary; } std::string printF() { return std::to_string(numerator_) + "/" + std::to_string(denominator_); } }; int main() { setlocale(LC_ALL, "rus"); int n1, d1, n2, d2; std::cout << "Введите числитель дроби 1:"; std::cin >> n1; std::cout << "Введите знаменатель дроби 1:"; std::cin >> d1; std::cout << "Введите числитель дроби 2:"; std::cin >> n2; std::cout << "Введите знаменатель дроби 2:"; std::cin >> d2; Fraction f1(n1, d1); Fraction f2(n2, d2); std::cout << f1.printF() << " + " << f2.printF() << " = " << (f1 + f2).printF() << std::endl; std::cout << f1.printF() << " - " << f2.printF() << " = " << (f1 - f2).printF() << std::endl; std::cout << f1.printF() << " * " << f2.printF() << " = " << (f1 * f2).printF() << std::endl; std::cout << f1.printF() << " / " << f2.printF() << " = " << (f1 / f2).printF() << std::endl; std::cout << "++" << f1.printF() << " * " << (f2).printF() << " = " << ((++f1)*f2).printF() << std::endl; std::cout << "Значение дроби 1 = " << f1.printF()<< std::endl; std::cout << f1.printF() << "-- *" << (f2).printF() << " = " << (f1-- * f2).printF() << std::endl; std::cout << "Значение дроби 1 = " << f1.printF() << std::endl; return 0; }