|
ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
|
Задача 76222
УсловиеРазрешим применять команды write(i) лишь при i = 0,1,2,...,9. Составить программу, печатающую десятичную запись заданного натурального числа n > 0. (Случай n = 0 явился бы некоторым исключением, так как обычно нули в начале числа не печатаются, а для n = 0 — печатаются.)Решение base:=1;
{base - степень 10, не превосходящая n}
while 10 * base <= n do begin
| base:= base * 10;
end;
{base - максимальная степень 10, не превосходящая n}
k:=n;
{инвариант: осталось напечатать k с тем же числом
знаков, что в base; base = 100..00}
while base <> 1 do begin
| write(k div base);
| k:= k mod base;
| base:= base div 10;
end;
{base=1; осталось напечатать однозначное число k}
write(k);
Замечание. Типичная ошибка при решении этой задачи: неправильно обрабатываются числа с нулями посередине. Приведённый инвариант допускает случай, когда k < base; в этом случае печатание k начинается со старших нулей. Источники и прецеденты использования |
|
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
|