Работа 3.3 Упр.9 Задание 1 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 9. Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (x1,у1) и (х2, 0), для второго — (x3, у3), (х4, 0). Составить программу, определяющую, пересекаются ли данные прямоугольники, и вычисляющую площадь общей части, если они пересекаются.
Пусть первый прямоугольник задан координатами $$ (x_1, y_1) $$ и $$ (x_2, 0) $$, а второй — $$ (x_3, y_3) $$ и $$ (x_4, 0) $$. Тогда их горизонтальные отрезки пересекаются, если выполняется неравенство
$$x_3 < x_2 \land x_4 > x_1.$$
Если это условие не выполняется, то прямоугольники не пересекаются.
Если пересечение есть, то площадь общей части равна произведению ширины пересечения на меньшую из высот прямоугольников. Ширина пересечения:
$$\min(x_2, x_4) — \max(x_1, x_3).$$
Высота общей части:
$$\min(y_1, y_2).$$
Тогда площадь пересечения:
$$S = \bigl(\min(x_2, x_4) — \max(x_1, x_3)\bigr)\cdot \min(y_1, y_2).$$
var x1, x2, y1, x3, x4, y2, s: real;
begin
repeat
writeln(‘Введите абсциссы вертикальных сторон первого прямоугольника x1, x2 (x2>x1>=0)’);
readln(x1, x2);
until (x1 >= 0) and (x2 > x1);repeat
write(‘Ордината верхней стороны y1>0 y1=’);
readln(y1);
until y1 > 0;repeat
writeln(‘Введите абсциссы вертикальных сторон второго прямоугольника x3, x4 (x4>x3>=0)’);
readln(x3, x4);
until (x3 >= 0) and (x4 > x3);repeat
write(‘Ордината верхней стороны y2>0 y2=’);
readln(y2);
until y2 > 0;if (x3 >= x2) or (x4 <= x1) then
writeln(‘Прямоугольники не пересекаются!’)
else
begin
if y1 >= y2 then
s := (min(x2, x4) — max(x1, x3)) * y2
else
s := (min(x2, x4) — max(x1, x3)) * y1;
writeln(‘Прямоугольники пересекаются, площадь пересечения=’, s:0:2);
end;
end.
В программе сначала вводятся координаты прямоугольников с проверкой корректности данных, затем определяется факт пересечения и вычисляется площадь общей части.
Ответ
Программа на Pascal, определяющая пересечение прямоугольников и площадь общей части, приведена выше.