/
AirLexa
/
04
Обзор
Документация
Войти
/
AirLexa
/
04
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_09/Task_2/Task_2.cpp
79 строк
2 KB
AirLexa
загрузка
05 мар 2026, 22:18
Верифицирован
05 мар 2026, 22:18
fe59659
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> class my_num { std::string num; public: my_num(std::string n) { num = n; }; my_num(my_num&& moved) noexcept { num = moved.num; moved.num = ""; } my_num& operator =(my_num&& moved) noexcept { if (&moved != this) { // избегаем самого в себя num = moved.num; moved.num = ""; } return *this; } std::string get_num() { return num; } my_num operator +(const my_num& obj) { std::string res = ""; std::size_t len_1 = num.length() - 1; std::size_t len_2 = obj.num.length() - 1; std::size_t max_len = len_1 > len_2 ? len_1 : len_2; char per = 0, op_1, op_2; for (int i = 0; i <= max_len; i++) { op_1 = i <= len_1 ? num[len_1 - i] - '0' : 0; op_2 = i <= len_2 ? obj.num[len_2 - i] - '0' : 0; res = char((op_1 + op_2 + per) % 10 + '0') + res; per = (op_1 + op_2 + per) / 10; } if (per) res = char(per + '0') + res; my_num tmp(res); return tmp; } my_num operator *(const int mn) { my_num tmp(num); for (int i = 0; i < mn - 1; i++) tmp = tmp + *this; return tmp; } }; std::ostream& operator<<(std::ostream& stream, my_num& obj) { return stream << obj.get_num(); } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); my_num num_1 = my_num("123456789"); my_num num_2 = my_num("987654321"); my_num num_3 = num_1 + num_2; std::cout << num_1 << " + " << num_2; num_1 = std::move(num_3); std::cout << " = " << num_1 << std::endl; num_2 = num_1 * 3; std::cout << num_1 << " * 3 = " << num_2 << std::endl; return 0; }