#pragma once /* Класс Number -- класс положительных больших чисел Большое число будет храниться в динамическом массиве data Каждый элемент этого массива содержит разряд числа в 100-ричной системе счисления (так как base = 100) По сути, каждый элемент data хранит две цифры числа в десятичной записи Значение 100 для системы счисления выбрано как компромис между эффективностью и удобством написания программы. Если выбрать значения базы 10 - то программа будет не так эффективна по памяти Если выбрать значения базы 256 (максимально эффективное использование памяти для типа char), то алгоритм печати на экран сильно усложнится В качестве альтернативы, можно было выбрать базу 1e9, изменив при этом тип элементов c char на int capacity - размер массива data size - сколько ячеек занимет число в массиве data size <= capacity Для удобства разряды числа хранятся в обратном порядке Например, число 12345678 соответствует массиву data = {78, 56, 34, 12} (это упрощает многие алгоритмы с такими числами) */ class Number { private: static const int base = 100; std::size_t size; std::size_t capacity; char* data; public: Number(int a); Number(); // Конструктор копирования Number(const Number& n); Number(const char* str); ~Number(); Number& operator=(const Number& right); Number operator+(Number a); void operator+=(const Number& a); bool isEven() const; Number operator*(const Number& right) const; void operator*=(const Number& a); bool operator==(const Number& a) const; bool operator!=(const Number& a) const; bool operator>(const Number& a) const; bool operator<(const Number& a) const; void div2(); friend std::ostream& operator<<(std::ostream& stream, const Number& right); }; std::ostream& operator<<(std::ostream& stream, const Number& right);