1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.3 Упр.9 Задание 1 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 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, определяющая пересечение прямоугольников и площадь общей части, приведена выше.



Общая оценка
4.8 / 5
Другие учебники
Другие предметы