Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами - Turbo Pascal
Формулировка задачи:
Решение задачи: «Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами»
- //Заводим 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, то также обрабатывается в соответствии с правилами, но вместо слова один
используется слово десять
, одиннадцать
, и т.д., в зависимости от значения последней цифры.
Наконец, выводится итоговое слово, которое представляет собой преобразованное число.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д