В начале в строке находилось 333 троек по 8 плюс одна 8, всего 1000 восьмерок. 1. При выполнения цикла каждая из троек 8 будет заменена на одну 9. Значит у нас получится строка длиной в 334 символа, где 333 девятки и последний символ - восьмерка 2. Далее 333 девятки заменятся на 111 восьмерок плюс последняя восьмерка - всего получим 112 восьмерок 3. Из 112 восьмерок получится 37 девяток и одна восьмерка 4. И 37 девяток получим 12 восьмерок плюс одна девятка и плюс последняя восьмерка 5. 12 восьмерок дадут 4 девятки плюс последние 9 и 8 6. И наконец получаем строку 8998 ответ: 8998
var n : 0..1000; begin repeat write ('Введите натуральное число, меньшее 1000: '); readln (n); until n in [1..999];
if n in [100..999] then write (ch_3[n div 100], ' '); if (n mod 100) in [20..99] then begin write (ch_2[(n mod 100)div 10], ' '); if (n mod 10) <> 0 then write (ch_1[n mod 10]); end else if (n mod 100) <>0 then write (ch_1[n mod 100]);
1. При выполнения цикла каждая из троек 8 будет заменена на одну 9. Значит у нас получится строка длиной в 334 символа, где 333 девятки и последний символ - восьмерка
2. Далее 333 девятки заменятся на 111 восьмерок плюс последняя восьмерка - всего получим 112 восьмерок
3. Из 112 восьмерок получится 37 девяток и одна восьмерка
4. И 37 девяток получим 12 восьмерок плюс одна девятка и плюс последняя восьмерка
5. 12 восьмерок дадут 4 девятки плюс последние 9 и 8
6. И наконец получаем строку 8998
ответ: 8998
const
ch_1: array[1..19] of string = ('один', 'два', 'три', 'четыре', 'пять', 'шесть','семь', 'восемь', 'девять', 'десять', 'одиннадцать', 'двенадцать', 'тринадцать','четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
ch_2: array [2..9] of string = ('двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
ch_3: array [1..9] of string = ('сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');
var
n : 0..1000;
begin
repeat
write ('Введите натуральное число, меньшее 1000: ');
readln (n);
until n in [1..999];
if n in [100..999] then write (ch_3[n div 100], ' ');
if (n mod 100) in [20..99] then
begin
write (ch_2[(n mod 100)div 10], ' ');
if (n mod 10) <> 0 then write (ch_1[n mod 10]);
end
else
if (n mod 100) <>0 then write (ch_1[n mod 100]);
end.