Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var n : longint;

К : INTEGER;

FUNCTION NUM(I: LONGINT): INTEGER;

Var s : integer;

BEGIN

S:=0;

REPEAT

S := S+N MOD 10;

N := N DIV 10

UNTIL N = 0;

NUM := S

END;

BEGIN

WRITE('BBEДИTE ЦЕЛОЕ ЧИСЛО N = ');

READLN(N);

WHILE N>9 DO

N := NUM(N);

WRITELN('EГO ЦИФРОВОЙ КОРЕНЬ РАВЕН', N)

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- создаем описание функции NUM;

- вводим целое число N;

- организуем цикл, вызывая функцию NUM и определяя сумму цифр числа N до тех пор, пока значение NUM не станет меньше 10;

- завершаем работу программы.

Переменные:

в функции NUM;

N - целое число (глобальная переменная);

S - вспомогательная переменная (локальная переменная);

в основной программе:

N - целое число (глобальная переменная).

Задача 9.8

Дан прямоугольник со сторонами А и В, где А, В натуральные числа. Начинаем отсекать от него квадраты (рис. 9.1). Сколько таких квадратов можно отсечь, если каждый раз отсекается са­мый большой квадрат?

1

2

3

4

5

Рис. 9.1. Отсечение квадратов

Для решения этой задачи нам нужны ранее рассмотренные функции МАХ и MIN.

Введем:

- вспомогательные переменные X и У (Y > = X), соответст­вующие уменьшающимся сторонам прямоугольника;

- вспомогательную переменную D, которая определяет уменьшение размеров прямоугольника после очередного от­сечения наибольшего квадрата, сторона которого находится как X := MIN(D, X).

Организуем цикл, в котором сторона У уменьшается каждый раз на MIN(D, X) до тех пор, пока не останется последний квад­рат или У не станет меньше X. В последнем случае переименовы­ваем стороны оставшегося прямоугольника как Y := MAX(D, X) и X := MIN(D, X) и продолжаем цикл.

PROGRAM PG9_8A;

Var а, в, d, к, X, y : integer;

FUNCTION MIN(I, J : INTEGER): INTEGER;

BEGIN

IF KJ THEN MIN := I

ELSE MIN := J

END;

FUNCTION MAX(I, J: INTEGER): INTEGER;

BEGIN

IF I>J THEN MAX := I

ELSE MAX:= J

END;

BEGIN

REPEAT

WRITELN('BBEДИTE ДВА НАТУРАЛЬНЫХ ЧИСЛА');

READLN(A, В);

UNTIL (A>0) AND (B>0);

К:=1;

Х:= MIN(A, B);

Y:= MAX(A, B);

WHILE X<>Y DO

BEGIN

К := K+1;

D := Y-X;

Y := MAX(D, X);

X := MIN(D, X);

END;

WRITELN('ИCKOMOE ЧИСЛО КВАДРАТОВ :', К)

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- создаем описание функций MIN и МАХ;

- вводим два натуральных числа А и В;

- присваиваем начальные значения вспомогательным пере­менным;

- организуем цикл, в котором сторона У уменьшается каждый раз на MIN(D, X) до тех пор, пока У не станет равным X;

- завершаем работу программы.

Переменные:

в функции MIN:

I, J - два целых числа (глобальные переменные);

в функции МАХ:

I, J - два целых числа (глобальные переменные);

в основной программе;

А, В - два натуральных числа (глобальные переменные);

D, X, Y - вспомогательные переменные;

К - количество отрезаемых квадратов.

Ту же самую задачу можно решить с помощью стандартных функций PASCAL: выделение целой части от деления У на X Y DIV X и выделения остатка Y MOD X.

PROGRAM PG9_8B;