Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 7 стр.

UptoLike

7
ся как разность наибольшего и наименьшего k - значного числа плюс один:
s = max - min + 1.
Напишем функцию str(n), которая будет вычислять количество цифр в кни -
ге из n страниц. Для этого определим количество цифр k в числе n , написав
функцию kol_cifr(n) . Искомое значение str(n) найдем как сумму цифр, необхо-
димых для нумерации всех i - значных чисел (i=1,2,...,k-1), и цифр, необходимых
для нумерации оставшихся k - значных чисел.
Program Nomer;
Uses crt;
Var k:integer;
function kol_cifr(n:integer):integer;
{количество цифр в числе n}
var s:integer;
begin
s:=0;
repeat
s:=s+1; n:=n div 10 until n=0;
kol_cifr:=s;
end; {kol_cifr}
function str(n:integer):integer;
{количество цифр в номерах книги из n страниц}
var i, min, max, s:integer;
begin
s:=0; min:=1; max:=9;
for i:=1 to kol_cifr(n)-1 do
begin
s:=s+(max-min+1)*i; min:=min*10; max:=min*10-1
end;
str:=s+(n-min+1)*kol_cifr(n)
end; {str}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
repeat
write('Введите количество страниц в книге : '); readln(k)
until k>0;
writeln('Для нумерации всех страниц книги нужно ',str(k),' цифр');
readkey
End.{Nomer}
В программе к задаче 2 при вычислении функции str() идет обращение к
функции kol_cifr(). Функция kol_cifr() является подчиненной функции str(), хотя
функция kol_cifr() не является внутренней функцией для str().
Блоки похожи на черные ящики” с односторонне зеркальной крышкой: из
них видны (доступны ) блоки и данные, описанные выше!
2. Процедуры. Способы передачи параметров