Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн

Числа как строки

Класс verylong хранит числа в виде строк разрядов. Это строки старомодного ти-

па char* из языка C. В этом контексте с ними проще работать, чем с типом string.

Именно использованием этого уже подзабытого типа объясняется такая большая

разрядность: C++ может рассматривать эти строки просто как массивы. Таким

образом, можно хранить в строках числа сколь угодно большой разрядности.

В классе verylong есть два компонентных данных: массив типа char, хранящий

строку разрядов, и целочисленное значение длины строки (последнее, строго

говоря, не столь необходимо, но использовать его как-то проще, чем постоянно

 

вычислять strlen() для нахождения длины строки). Цифры (собственно, разряды)

в строке хранятся в обратном порядке, таким образом, последняя значащая

цифра содержится в vLstr[0]. Это упрощает выполнение операций над строкой.

На рис. 13.2 показано, как число хранится в строке.

 

Рис. 13.2. Число типа verylong

Мы включили в программу возможность складывать и умножать числа в фор-

мате verylong. В качестве упражнения можем предложить добавить функции вы-

читания и деления.

 

15