Написать программу перевода целого числа 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.

Объяснение кода листинга программы

  1. В программе используется переменная st, которая представляет собой строку. Она инициализируется пустой строкой.
  2. Переменные n и i используются для хранения введенного пользователем числа и его част. Они инициализируются значением 0.
  3. Массив c используется для хранения частного числа. Он инициализируется нулевыми значениями.
  4. Массив s используется для хранения строк, представляющих целые числа. Он инициализируется нулевыми значениями.
  5. Строка s[1, 1] представляет первую цифру введенного числа. Значение этой строки устанавливается равным 'миллиард'. Аналогично, строки s[1, 2] и s[1, 3] представляют вторую и третью цифры числа соответственно.
  6. Строки s[2, 1]..s[2, 3] представляют четвертую, пятую и шестую цифры числа соответственно.
  7. Строка s[3, 1] представляет первую цифру введенного числа. Значение этой строки устанавливается равным 'тысяча'. Аналогично, строки s[3, 2] и s[3, 3] представляют вторую и третью цифры числа соответственно.
  8. Строка s[4, 1] представляет первую цифру введенного числа. Значение этой строки устанавливается равным пустой строке.
  9. Строки s[4, 2] и s[4, 3] представляют вторую и третью цифры числа соответственно.
  10. Программа выполняет следующие действия:
    • Выводит сообщение для запроса ввода числа.
    • Считывает введенное число.
    • Инициализирует переменную st пустой строкой.
    • Вычисляет частные числа для каждой цифры введенного числа и сохраняет их в массиве c.
    • Вычисляет количество цифр введенного числа и сохраняет его в переменной n.
    • Использует цикл for для вывода каждой цифры числа в формате 'цифра', если она не равна нулю.
    • Если последняя цифра числа больше или равна 10, то добавляет к строке st соответствующую строку из массива s.
    • Если последняя цифра числа находится между 10 и 19, то добавляет к строке st соответствующую строку из массива s, используя оператор if.
    • Выводит итоговую строку st.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы