Задача "правило деления «лесенкой» числа m на число n" - Pascal
Формулировка задачи:
Ввести два натуральных числа m и n (m>n). Показать на экране правило деления «лесенкой» числа m на число n.
Вот такая задача.
Решение задачи: «Задача "правило деления «лесенкой» числа m на число n"»
textual
Листинг программы
var Delim, Delit, Chastnoe, Ostatok, Temp: integer; dA, dB: integer; A, B, C: array of integer; i, j, S, k, l: integer; begin read(Delim); writeln(' / '); read(Delit); write(' = '); Chastnoe := Delim div Delit; write(Chastnoe); Ostatok := Delim mod Delit; if Ostatok > 0 then write(' (Остаток = ', Ostatok, ' )'); dA := Delim; i := 1; while dA <> 0 do begin setlength(C, i); C[i - 1] := dA mod 10; dA := dA div 10; inc(i); end; dB := Chastnoe; i := 1; while dB <> 0 do begin setlength(B, i); B[i - 1] := dB mod 10; dB := dB div 10; inc(i); end; writeln; writeln; S := length(C); setlength(A, S); j := length(B); k:=1; for l:= 1 to j do k:=k*10; Temp := 1; while (Delim <> 0) do begin if Delim < Delit then begin for i := 1 to (length(C) - length(A)) do write(' '); writeln(Delim); Delim:=0; end else begin if Temp <> 0 then begin for i := 1 to length(C) - length(A) do write(' '); writeln(Delim); Temp := Round(B[j - 1] * Delit); if Temp <> 0 then begin for i := 1 to length(C) - length(A) do write(' '); writeln(Temp); end else begin dec(j); Temp := Round(B[j - 1] * Delit); for i := 1 to length(C) - length(A) do write(' '); writeln(Temp); end; end; k:=k div 10; Delim := Delim - Round(Temp * k); dA := Delim; i := 1; while dA <> 0 do begin setlength(A, i); A[i - 1] := dA mod 10; dA := dA div 10; inc(i); end; dec(j); end; end; readln; end.
Объяснение кода листинга программы
- Задача программы - деление числа m на число n
лесенкой
. - Входные данные: числа Delim и Delit.
- Переменные:
- Delim - входное число.
- Delit - делитель.
- Chastnoe - частное первого делителя.
- Ostatok - остаток первого делителя.
- dA, dB - делители чисел Delim и Chastnoe соответственно.
- A, B, C - массивы для хранения разрядов чисел dA и dB.
- i, j, S, k, l - вспомогательные переменные для работы с массивами и циксами.
- Temp - временная переменная для хранения округленного значения.
- Алгоритм работы программы:
- Считывание входных чисел Delim и Delit.
- Вычисление частного Chastnoe и остатка Ostatok первого делителя.
- Преобразование Delim в массив dA и разбиение его на разряды.
- Преобразование Chastnoe в массив dB и разбиение его на разряды.
- Организация цикла для выполнения деления
лесенкой
. - Вывод на экран результатов деления.