Чтение онлайн

на главную

Жанры

Технологии программирования

Костерин В В

Шрифт:

var

ir, C1D, RD: word; {Рабочие переменные}

Шаг 6. РЕЗУЛЬТАТЫ СБОРКИ ПРОГРАММЫ

Program MultNumbers;

{Расчет произведения двух чисел}

uses

Crt;

const

Digits = 100; {Число цифр в числах}

type

TNumber = record

D: array[1..Digits] of Byte;

{BD[1]
находится младший разряд числа}

N: word; {Число разрядов в числе от 1 до Digits}

end;

var

C1: TNumber; {Первый сомножитель}

C2: TNumber; {Второй сомножитель}

R: TNumber; {Результат умножения}

Error: boolean; {True — ошибка переполнения}

var

p: word; {Значение числа переноса при умножении C1.D на очередную цифру C2.D}

var {Рабочие переменные}

i, j, ir, C1D, RD, InCode: word;

ch: char; begin

ClrScr; {Очистка экрана}

{Ввод корректного значения числа цифр первого сомножителя}

repeat

Write('Введите число цифр первого сомножителя)

Write(' 1 до ', Digits, ' ');

ReadLn(C1.N);

until ((C1.N >= 1) and (C1.N <= Digits));

Write('Вводите цифры первого сомножителя ');

{Ввод цифр первого сомножителя в порядке от C1.D[C1.N] до C1.D[1]}

for i:= C1.N downto 1 do

begin

{До ввода корректного символа цифры}

repeat

ch:= ReadKey; {Чтение символа клавиатуры}

Val(ch, C1.D[i], InCode); {Преобразование в значение}

until(InCode = 0);

Write(ch);

end;

WriteLn;

{Ввод корректного значения числа цифр второго сомножителя}

repeat

Write('Введите число цифр второго сомножителя');

Write(' от 1 до ', Digits,' ');

ReadLn(C2.N);

until ((C2.N >= 1) and (C2.N <= Digits));

Write('Вводите цифры второго сомножителя ');

{Ввод цифр второго сомножителя в
порядке от C2.D[C2.N] до C2.D[1]}

for i:= C2.N downto 1 do

begin

{До ввода корректного символа цифры}

repeat

ch:= ReadKey; {Чтение символа клавиатуры}

Val(ch, C2.D[i], InCode); {Преобразование
в
значение}

until(InCode = 0);

Write(ch);

end;

WriteLn;

{Расчет произведения сомножителей}

{Цикл задает номер j очередной цифры
второго сомножителя}

ERROR:= False;

j:= 1;

R.D[1]:= 0;

while ((j <= C2.N) and
(not(ERROR))) do

begin

{Увеличение результата на сдвинутый продукт умножения первого сомножителя на j-ю цифру второго сомножителя}

Р:= 0;

i:= 0; {Номер цифры первого сомножителя}

while(((i < C1.N) or (p <> 0)) and (not(ERROR))) do

begin

Inc(i);

{Расчет очередной цифры результата и цифры переноса}

{Контролируемый расчет ir — номера очередной цифры результата}

ir: = i + j — 1;

if (ir > Digits) then

ERROR:= True

else

begin

{Изменение длины результата R.N}

if (R.N < ir)

then

begin

R.N:= ir;

R.D[ir]:= 0; {Обнуление новой цифры результата}

end;

{Получение очередной цифры C1D первого
сомножителя}

if (i <= C1.N)

then

C1D:= C1.D[i]

else

C1D:= 0;

{Изменение очередной цифры результата и p}

RD:= p + R.D[ir] + C1D * C2.D[j];

R.D[ir]:= RD mod 10;

p:= RD div 10;

end;

end;

Inc(j); {j:= j + 1}

end;

{Устранение лидирующих нулей}

while ((R.N > 1) and (R.D[i] =0)) do

Dec(R.N); {R.N:= R.N — 1}

WriteLn;

{Вывод результата произведения}

if ERROR

then

WriteLn('Ошибка переполнения')

else

begin

Поделиться:
Популярные книги

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

В теле пацана 6

Павлов Игорь Васильевич
6. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана 6

Кодекс Охотника. Книга XV

Винокуров Юрий
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XV

Брак по-драконьи

Ардова Алиса
Фантастика:
фэнтези
8.60
рейтинг книги
Брак по-драконьи

Горькие ягодки

Вайз Мариэлла
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Горькие ягодки

Идеальный мир для Лекаря 6

Сапфир Олег
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 6

Эксперимент

Юнина Наталья
Любовные романы:
современные любовные романы
4.00
рейтинг книги
Эксперимент

В теле пацана

Павлов Игорь Васильевич
1. Великое плато Вита
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
В теле пацана

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Шестое правило дворянина

Герда Александр
6. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Шестое правило дворянина

Третий. Том 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 3

Боги, пиво и дурак. Том 3

Горина Юлия Николаевна
3. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 3

Live-rpg. эволюция-4

Кронос Александр
4. Эволюция. Live-RPG
Фантастика:
боевая фантастика
7.92
рейтинг книги
Live-rpg. эволюция-4