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

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

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

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

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

textual
Листинг программы
//Заводим 2 массива
c:array[1..2]of integer;{массив тысяч(0-999) и единиц(0-999)}
s:array[1..3]of string;{массив склонений тысяч}
//заполняем массив S
s[1]:='тысяча';
s[2]:='тысячи';
s[3]:='тысяч';
//вводим число от 0 до 1 миллиона с проверкой диапазона
repeat
write('Введите число от 0 до 1 000 000 n=');
readln(n);
until(n>=0)and(n<=1000000);
//если 1000000 или ноль то сразу пишем
if n=1000000 then st:='один миллион'
else if n=0 then st:='ноль'
else //иначе
 begin
  st:='';
  c[1]:=n div 1000; //выделяем тысячи
  c[2]:=n mod 1000; //выделяем единицы
  for i:=1 to 2 do //переволим тысячи и единицы в число прописью
  if c[i]<>0 then
   begin
    if c[i] div 100<>0 then //если не меньше 100
    case c[i] div 100 of //делим на 100, определяем первую цифру
    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                           //и если не 1 то
    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=1 then st:=st+' одна' else st:=st+' один'; //подбираем слово
    2:if i=1 then st:=st+' две' else st:=st+' два';   //для тысяч и единиц
    3:st:=st+' три';  //для цифр >1 одинаково
    4:st:=st+' четыре';
    5:st:=st+' пять';
    6:st:=st+' шесть';
    7:st:=st+' семь';
    8:st:=st+' восемь';
    9:st:=st+' девять';
    end;
   end
  else  //если вторая цифра=1
   case (c[i] mod 100) of //если 2 последние цифры 11..19
   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 i=1 then  //если тысячи
    begin
     //если 11..19 то + 'тысяч'
     if(c[i] mod 100>=10) and (c[i] mod 100<=19) then st:=st+' '+s[3]+' '
     else //иначе
     case c[i] mod 10 of
     1:st:=st+' '+s[1]+' ';//1=тысяча
     2..4:st:=st+' '+s[2]+' ';//2..4=тысячи
     5..9,0:st:=st+' '+s[3]+' ';//5..9=тысяч
     end;
    end;
  end;
 end;
writeln(st);//выводим ответ

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

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

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


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

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

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