Написать программу перевода целого числа a из цифрового формата в прописной - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Добрый день. Знаю, что такое уже было на вашем форуме, но оно было не полностью, а как доделать я не сильно знаю. Задача: Написать программу перевода целого числа a из цифрового формата в прописной. a < 1012 Пример: a = 123 ⇒ cто двадцать три. Вот код, который я обнаружил на этом сайте:
Листинг программы
  1. var s:string;
  2. n:integer;
  3. begin
  4. repeat
  5. write('Введите число от 1 до 1000 n = ');
  6. read(n);
  7. until (n>0)and(n<=1000);
  8. case n div 1000 of
  9. 1000:s:='одна тысяча';
  10. else
  11. begin
  12. s:='';
  13. case n div 100 of
  14. 1:s:='сто';
  15. 2:s:='двести';
  16. 3:s:='триста';
  17. 4:s:='четыреста';
  18. 5:s:='пятьсот';
  19. 6:s:='шестьсот';
  20. 7:s:='семьсот';
  21. 8:s:='восемьсот';
  22. 9:s:='девятьсот';
  23. end;
  24. case n mod 100 div 10 of
  25. 2:s:=s+' двадцать';
  26. 3:s:=s+' тридцать';
  27. 4:s:=s+' сорок';
  28. 5:s:=s+' пятьдесят';
  29. 6:s:=s+' шестьдесят';
  30. 7:s:=s+' семьдесят';
  31. 8:s:=s+' восемьдесят';
  32. 9:s:=s+' девяносто';
  33. end;
  34. case n mod 100 of
  35. 10:s:=s+' десять';
  36. 11:s:=s+' одиннадцать';
  37. 12:s:=s+' двенадцать';
  38. 13:s:=s+' тринадцать';
  39. 14:s:=s+' четырнадцать';
  40. 15:s:=s+' пятнадцать';
  41. 16:s:=s+' шестнадцать';
  42. 17:s:=s+' семнадцать';
  43. 18:s:=s+' восемнадцать';
  44. 19:s:=s+' девятнадцать';
  45. else
  46. case n mod 10 of
  47. 1:s:=s+' один';
  48. 2:s:=s+' два';
  49. 3:s:=s+' три';
  50. 4:s:=s+' четыре';
  51. 5:s:=s+' пять';
  52. 6:s:=s+' шесть';
  53. 7:s:=s+' семь';
  54. 8:s:=s+' восемь';
  55. 9:s:=s+' девять';
  56. end;
  57. end;
  58. end;
  59. end;
  60. writeln(s);
  61. end.

Решение задачи: «Написать программу перевода целого числа a из цифрового формата в прописной»

textual
Листинг программы
  1. var
  2.   st: string;
  3.   n, i: int64;
  4.   c: array[1..4]of int64;
  5.   s: array[1..4, 1..3]of string;
  6.  
  7. begin
  8.   s[1, 1] := 'миллиард';
  9.   s[1, 2] := 'миллиарда';
  10.   s[1, 3] := 'миллиардов';
  11.   s[2, 1] := 'миллион';
  12.   s[2, 2] := 'миллиона';
  13.   s[2, 3] := 'миллионов';
  14.   s[3, 1] := 'тысяча';
  15.   s[3, 2] := 'тысячи';
  16.   s[3, 3] := 'тысяч';
  17.   s[4, 1] := '';
  18.   s[4, 2] := '';
  19.   s[4, 3] := '';
  20.   write('Введите число до 2 147 483 647 n=');
  21.   readln(n);
  22.   st := '';
  23.   c[1] := n div 1000000000;
  24.   c[2] := (n mod 1000000000) div 1000000;
  25.   c[3] := (n mod 1000000) div 1000;
  26.   c[4] := n mod 1000;
  27.   for i := 1 to 4 do
  28.     write(c[i], ' ');
  29.   writeln;
  30.   for i := 1 to 4 do
  31.     if c[i] <> 0 then
  32.     begin
  33.       if c[i] div 100 <> 0 then
  34.         case c[i] div 100 of
  35.           1: st := st + 'сто';
  36.           2: st := st + 'двести';
  37.           3: st := st + 'триста';
  38.           4: st := st + 'четыреста';
  39.           5: st := st + 'пятьсот';
  40.           6: st := st + 'шестьсот';
  41.           7: st := st + 'семьсот';
  42.           8: st := st + 'восемьсот';
  43.           9: st := st + 'девятьсот';
  44.         end;
  45.       if (c[i] mod 100) div 10 <> 1 then
  46.       begin
  47.         case (c[i] mod 100) div 10 of
  48.           2: st := st + ' двадцать';
  49.           3: st := st + ' тридцать';
  50.           4: st := st + ' сорок';
  51.           5: st := st + ' пятьдесят';
  52.           6: st := st + ' шестьдесят';
  53.           7: st := st + ' семьдесят';
  54.           8: st := st + ' восемьдесят';
  55.           9: st := st + ' девяносто';
  56.         end;
  57.         case c[i] mod 10 of
  58.           1: if i = 3 then st := st + ' одна' else st := st + ' один';
  59.           2: if i = 3 then st := st + ' две' else st := st + ' два';
  60.           3: st := st + ' три';
  61.           4: st := st + ' четыре';
  62.           5: st := st + ' пять';
  63.           6: st := st + ' шесть';
  64.           7: st := st + ' семь';
  65.           8: st := st + ' восемь';
  66.           9: st := st + ' девять';
  67.         end;
  68.       end
  69.       else
  70.         case (c[i] mod 100) of
  71.           10: st := st + ' десять';
  72.           11: st := st + ' одиннадцать';
  73.           12: st := st + ' двенадцать';
  74.           13: st := st + ' тринадцать';
  75.           14: st := st + ' четырнадцать';
  76.           15: st := st + ' пятндцать';
  77.           16: st := st + ' шестнадцать';
  78.           17: st := st + ' семнадцать';
  79.           18: st := st + ' восемнадцать';
  80.           19: st := st + ' девятнадцать';
  81.         end;
  82.       if (c[i] mod 100 >= 10) and (c[i] mod 100 <= 19) then st := st + ' ' + s[i, 3] + ' '
  83.       else
  84.         case c[i] mod 10 of
  85.           1: st := st + ' ' + s[i, 1] + ' ';
  86.           2..4: st := st + ' ' + s[i, 2] + ' ';
  87.           5..9, 0: st := st + ' ' + s[i, 3] + ' ';
  88.         end;
  89.     end;
  90.   writeln(st);
  91.   readln;
  92. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы