Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория / 2 / MNOGOPAZ

.DOC
Скачиваний:
31
Добавлен:
30.04.2013
Размер:
18.43 Кб
Скачать

3.5. Обработка многоразрядных чисел

Диапазон чисел, которые можно представить в ячейках памяти ЭВМ, ограничен. Для работы с числами, лежащими вне этого диапазона, требуется применение специальных приемов для размещения таких чисел в памяти и их обработки.

Для представления многоразрядного числа в памяти ЭВМ можно каждую его цифру хранить как элемент массива: самую младшую цифру - количество единиц - в первом элементе массива, количество десятков - во втором и т.д. Старшие незанятые элементы массива следует заполнить нулями.

3.5.1. Сложение многоразрядных чисел

Требуется сложить два целых n-разрядных числа (n£20). Каждое число считается представленным в виде одномерного массива. Результат сложения также будет получаться в одномерном массиве.

Сложение будет осуществляться аналогично сложению двух чисел "столбиком", т.е. складывают одноразрядные цифры двух слагаемых, начиная с младшего разряда. Из полученной суммы двух чисел каждый раз выделяют цифру соответствующего разряда суммы чисел и формируют перенос в следующий разряд. По окончании суммирования значение переноса (если он не равен нулю) считают за самую старшую цифру суммы. Следует иметь в виду, что при сложении двух n-разрядных чисел сумма может оказаться n+1 разрядным числом.

Исходные данные блок-схемы: А,В - массивы для хранения цифр слагаемых размером 20; N - количество цифр в большем слагаемом (N£20), после выполнения суммирования - количество цифр суммы; С - массив для хранения цифр суммы размером 21; D - значение суммы двух I-х цифр; Р - значение переноса в старший разряд; I ‑ счетчик разрядов - управляющая переменная цикла.

Ввод N

Ввод("Поочередно вводят цифры многоразрядных чисел, начиная с младшей")

Для I=1 до N Ввод A(I), B(I) конец цикла

P = 0

Для I = 1 до N

D = A(I)+B(I)+P

P = Int(D/10)

C(I) = D - P · 10

Конец цикла по I

Если Р=0 (Да) ¾¾¾¾¾¾¾¾¾¾Ø

(Нет) ½

N = N + 1 ½

C(N) = P ½

¬¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾û

Для J=N до 1 шаг -1

Вывод С(J)

Конец цикла по I

Чтобы напечатать результат в привычном виде, вывод элементов массива С осуществляется, начиная с конца - со старшего разряда.

3.5.2. Умножение многоразрядных чисел

Требуется умножить n-разрядное число (n £ 20) на целое число K (() < K£ 20) . Считают, что n-разрядное число представлено в виде одномерного массива.

Умножение осуществляют аналогично умножению столбиком. После перемножения i-ой цифры n-разрядного числа и числа K прибавляют к результату перенос из предыдущего разряда и выделяют из полученной суммы количество единиц. Это и будет i-я цифра произведения. После умножения n-й цифры n-разрядного числа на число K и выделения n-ой цифры произведения оставшийся перенос записывают поразрядно в массив, предназначенный для произведения, начиная с (n+1)-го элемента, выделяя цифры, согласно алгоритму "сумма цифр числа".

Исходные данные блок-схемы: А - массив для хранения цифр заданного многоразрядного числа, размером 20; К - целое число, сомножитель £100); В - массив - произведение размером 22; N -количество разрядов исходного числа; F - переменная для ввода очередной цифры многоразрядного числа; Р - значение переноса в старший разряд; С - значение суммы произведений i-ой цифры n-разрядного числа на число К и переноса в i-ый разряд.

rem: Ввод числа, начиная с младшей цифры.

rem: Для окончания ввода используют отрицательное число

I = 0

¾¾¾¾¾¾¾¾¾®Ввод F

½ Если F < 0 (Да) ¾¾Ø

½ (Нет) ½

½ I = I+1 ½

ë¾¾¾¾¾¾¾¾ A(I) = F ½

¬¾¾¾¾¾¾û

N = I

Ввод К

rem: начало цикла умножения

Р = 0

Для I = 1 до N

C = A(I) · K + P

P = Int(C/10)

B(I) = C - P · 10

Конец цикла по I

rem: занесение в массив В оставшихся цифр переноса

J = N

¾¾¾¾¾¾¾®Если Р = 0 (Да) ¾¾¾¾¾¾¾Ø

½ (Нет) ½

½ J = J + 1 ½

½ B(J) = P - (Int(P/10)) · 10 ½

ë¾¾¾¾¾¾¾¾P = Int(P/10) ½

¬¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾û

Для L=J до 1 шаг -1

Вывод B(L)

Конец цикла

Соседние файлы в папке 2