Написать программу перевода целого числа a из цифрового формата в прописной - Pascal ABC
Формулировка задачи:
Добрый день. Знаю, что такое уже было на вашем форуме, но оно было не полностью, а как доделать я не сильно знаю.
Задача:
Написать программу перевода целого числа a из цифрового формата в прописной. a < 1012 Пример: a = 123 ⇒ cто двадцать три.
Вот код, который я обнаружил на этом сайте:
Решение задачи: «Написать программу перевода целого числа a из цифрового формата в прописной»
textual
Листинг программы
var st: string; n, i: int64; c: array[1..4]of int64; s: array[1..4, 1..3]of string; begin s[1, 1] := 'миллиард'; s[1, 2] := 'миллиарда'; s[1, 3] := 'миллиардов'; s[2, 1] := 'миллион'; s[2, 2] := 'миллиона'; s[2, 3] := 'миллионов'; s[3, 1] := 'тысяча'; s[3, 2] := 'тысячи'; s[3, 3] := 'тысяч'; s[4, 1] := ''; s[4, 2] := ''; s[4, 3] := ''; write('Введите число до 2 147 483 647 n='); readln(n); st := ''; c[1] := n div 1000000000; c[2] := (n mod 1000000000) div 1000000; c[3] := (n mod 1000000) div 1000; c[4] := n mod 1000; for i := 1 to 4 do write(c[i], ' '); writeln; for i := 1 to 4 do if c[i] <> 0 then begin if c[i] div 100 <> 0 then case c[i] div 100 of 1: st := st + 'сто'; 2: st := st + 'двести'; 3: st := st + 'триста'; 4: st := st + 'четыреста'; 5: st := st + 'пятьсот'; 6: st := st + 'шестьсот'; 7: st := st + 'семьсот'; 8: st := st + 'восемьсот'; 9: st := st + 'девятьсот'; end; if (c[i] mod 100) div 10 <> 1 then begin case (c[i] mod 100) div 10 of 2: st := st + ' двадцать'; 3: st := st + ' тридцать'; 4: st := st + ' сорок'; 5: st := st + ' пятьдесят'; 6: st := st + ' шестьдесят'; 7: st := st + ' семьдесят'; 8: st := st + ' восемьдесят'; 9: st := st + ' девяносто'; end; case c[i] mod 10 of 1: if i = 3 then st := st + ' одна' else st := st + ' один'; 2: if i = 3 then st := st + ' две' else st := st + ' два'; 3: st := st + ' три'; 4: st := st + ' четыре'; 5: st := st + ' пять'; 6: st := st + ' шесть'; 7: st := st + ' семь'; 8: st := st + ' восемь'; 9: st := st + ' девять'; end; end else case (c[i] mod 100) of 10: st := st + ' десять'; 11: st := st + ' одиннадцать'; 12: st := st + ' двенадцать'; 13: st := st + ' тринадцать'; 14: st := st + ' четырнадцать'; 15: st := st + ' пятндцать'; 16: st := st + ' шестнадцать'; 17: st := st + ' семнадцать'; 18: st := st + ' восемнадцать'; 19: st := st + ' девятнадцать'; end; if (c[i] mod 100 >= 10) and (c[i] mod 100 <= 19) then st := st + ' ' + s[i, 3] + ' ' else case c[i] mod 10 of 1: st := st + ' ' + s[i, 1] + ' '; 2..4: st := st + ' ' + s[i, 2] + ' '; 5..9, 0: st := st + ' ' + s[i, 3] + ' '; end; end; writeln(st); readln; end.
Объяснение кода листинга программы
- В программе используется переменная
st
, которая представляет собой строку. Она инициализируется пустой строкой. - Переменные
n
иi
используются для хранения введенного пользователем числа и его част. Они инициализируются значением 0. - Массив
c
используется для хранения частного числа. Он инициализируется нулевыми значениями. - Массив
s
используется для хранения строк, представляющих целые числа. Он инициализируется нулевыми значениями. - Строка
s[1, 1]
представляет первую цифру введенного числа. Значение этой строки устанавливается равным 'миллиард'. Аналогично, строкиs[1, 2]
иs[1, 3]
представляют вторую и третью цифры числа соответственно. - Строки
s[2, 1]
..s[2, 3]
представляют четвертую, пятую и шестую цифры числа соответственно. - Строка
s[3, 1]
представляет первую цифру введенного числа. Значение этой строки устанавливается равным 'тысяча'. Аналогично, строкиs[3, 2]
иs[3, 3]
представляют вторую и третью цифры числа соответственно. - Строка
s[4, 1]
представляет первую цифру введенного числа. Значение этой строки устанавливается равным пустой строке. - Строки
s[4, 2]
иs[4, 3]
представляют вторую и третью цифры числа соответственно. - Программа выполняет следующие действия:
- Выводит сообщение для запроса ввода числа.
- Считывает введенное число.
- Инициализирует переменную
st
пустой строкой. - Вычисляет частные числа для каждой цифры введенного числа и сохраняет их в массиве
c
. - Вычисляет количество цифр введенного числа и сохраняет его в переменной
n
. - Использует цикл
for
для вывода каждой цифры числа в формате 'цифра', если она не равна нулю. - Если последняя цифра числа больше или равна 10, то добавляет к строке
st
соответствующую строку из массиваs
. - Если последняя цифра числа находится между 10 и 19, то добавляет к строке
st
соответствующую строку из массиваs
, используя операторif
. - Выводит итоговую строку
st
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д