Манипулирование с целыми числами произвольной длины

Операция бинарный — определена через унарный минус и бинарный плюс.

Операция * производится по технологии, аналогичной умножению в столбик. При этом все действия ведутся в системе счисления с основанием 100. Длина массива результата может быть равна либо сумме длин операндов, либо этой сумме минус 1. Эта ситуация аналогична той, которая была при сложении чисел с одинаковым знаком, и здесь тоже не делается оптимизации.

Операция << - просто операция вывода класса OSTREAM, определенная для класса UNLIM. Сначала она выводит '-' если знак числа отрицательный, а затем само число поразрядно (по десятичным разрядам), начиная со старшего. При этом используется функция digit (number), которая возвращает значение десятичного разряда с номером number.

Функция- конструктор unlim (char*) обрабатывает инициализацию символьной строкой. При этом распознаются следующие ошибочные ситуации: инициализация пустой строкой; недопустимый символ в строке; строка содержит знак, но не содержит значения. Во всех этих случаях число инициализируется нулем.

Функция- конструктор unlim (unlim&) обрабатывает инициализацию другим объектом класса UNLIM.

Отчет тестовой программы

Проверка работы конструкторов:

Без инициализации:

unlim a;

a=0

Инициализация строкой:

unlim b="123″

b=123

unlim c="-123″

c=-123

unlim d="+123″

d=123

unlim e="+" Unlim class error: Sign without value. Value=0

e=0

unlim f="-" Unlim class error: Sign without value. Value=0

f=0

unlim g="aaa" Unlim class error: Not digit symbol in string. String ignored. Value=0

g=0

unlim h="4a123″ Unlim class error: Not digit symbol in string. String ignored. Value=0