Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами - Turbo Pascal

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

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

Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами

Решение задачи: «Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами»

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

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

Этот код на Turbo Pascal предназначен для преобразования натурального числа в текст, используя словарь слов для каждой тысячи, сотни и единицы. Сначала объявляются два массива: c для хранения тысяч и единиц, и s для хранения слов, используемых при описании чисел. Затем в цикле вводится число от 0 до 1 000 000. Если это число равно 1 000 000, то выводится слово один миллион. Если число равно 0, то выводится слово ноль. В противном случае число разбивается на тысячи и единицы, и эти цифры затем преобразуются в слова, которые выводятся в формате прописью. Цифры обрабатываются в порядке их появления: сначала тысячи, затем сотни, затем единицы. Если последняя цифра числа равна 1, то вместо слова одна используется слово один, и так далее. Если вторая цифра числа равна 1, то также обрабатывается в соответствии с правилами, но вместо слова один используется слово десять, одиннадцать, и т.д., в зависимости от значения последней цифры. Наконец, выводится итоговое слово, которое представляет собой преобразованное число.

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


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

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

7   голосов , оценка 4 из 5

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

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

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