PROGRAM PG9_8B;
VAR А, В, D, К, X, Y: INTEGER; BEGIN WRITELN('BBEДИTE ДВА НАТУРАЛЬНЫХ ЧИСЛА'); READLN(A, В); К:= 0; IF A>B THEN BEGIN X:=B; Y:=A END ELSE BEGIN Y:= B; X:=A END; REPEAT K:= K+Y DIV X; D.= Y MOD X; Y:= X; X:= D; UNTIL D = 0; WRITELN('ИCKOMOE ЧИСЛО КВАДРАТОВ: ', К) END. Для решения задачи: - формируем тело программы и описываем переменные; - создаем описание функций MIN и МАХ; - вводим два натуральных числа А и В; - присваиваем начальные значения вспомогательным переменным; - организуем цикл, в котором сторона У уменьшается каждый раз до величины X, а само X становится равным Y MOD X; - цикл работает до тех пор, пока У не станет кратным X; - завершаем работу программы. Переменные: в основной программе; А, В - два натуральных числа (глобальные переменные); D, X, Y - вспомогательные переменные; К - количество отрезаемых квадратов. Задача 9.9 Дан прямоугольный бильярдный стол со сторонами А и В, где А, В - натуральные числа (бильярд Льюиса Кэрролла -рис. 9.2). Из угловой лузы вылетает шар под углом 45 градусов к боковым стенкам, ударяется о борт, отскакивает, ударяется еще раз и т. д., пока не вылетит через одну из угловых луз. Рассчитать количество отрезков в ломаной траектории шара. Считать угол падения равным углу отражения. Рис. 9.2. Бильярд Льюиса Кэрролла Данная задача решается с помощью стандартных функций вы деления целой части от деления Y на X Y DIV X и выделения ос татка Y MOD X. При прохождении шаром прямоугольного стола и отражении его от боковых сторон происходит увеличение числа отрезков траектории на два, а обратный путь вычисляется как Y:= A – X+Y MOD X, где Y - обратный путь для шара, А - длинная сторона стола, X - короткая сторона стола.
|