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