Найти площадь, общую для обоих прямоугольников - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

1. Два прямоугольника заданы координатами несмежных вершин, их стороны параллельны осям координат. Найти площадь, общую для обоих прямоугольников. Составить функции нахождения большего и меньшего из двух чисел.

Решение задачи: «Найти площадь, общую для обоих прямоугольников»

textual
Листинг программы
function min(a,b:real):real;
begin
if a<b then min:=a else min:=b
end;
function max(a,b:real):real;
begin
if a>b then max:=a else max:=b
end;
var x1,y1,x2,y2,x3,y3,x4,y4,x11,y11,x12,y12,s:real;
begin
writeln('Введите координаты нижней левой вершины первого прямоугольника');
readln(x1,y1);
repeat
writeln('Введите координаты верхней правой вершины первого прямоугольника');
readln(x2,y2);
until (x2>x1)and(y2>y1);
writeln('Введите координаты нижней левой вершины второго прямоугольника');
readln(x3,y3);
repeat
writeln('Введите координаты верхней правой вершины второго прямоугольника');
readln(x4,y4);
until (x4>x3)and(y4>y3);
x11 := max(min(x1,x2),min(x3,x4));
x12 := min(max(x1,x2),max(x3,x4));
y11 := max(min(y1,y2),min(y3,y4));
y12 := min(max(y1,y2),max(y3,y4));
if (x12-x11>0)and(y12-y11>0) then
s:=(x12-x11)*(y12-y11)else s:=0;
write('Площадь пересечения=',s:0:2);
end.

Объяснение кода листинга программы

  1. Функция min(a,b:real):real; - находит минимальное значение из двух чисел a и b
  2. Функция max(a,b:real):real; - находит максимальное значение из двух чисел a и b
  3. var x1,y1,x2,y2,x3,y3,x4,y4,x11,y11,x12,y12,s:real; - объявляет переменные для координат прямоугольников и площади пересечения
  4. writeln('Введите координаты нижней левой вершины первого прямоугольника'); - запрашивает координаты нижней левой вершины первого прямоугольника
  5. readln(x1,y1); - считывает введенные координаты
  6. repeat - повторяет запрос координат до тех пор, пока не будет введен правильный прямоугольник
  7. writeln('Введите координаты верхней правой вершины первого прямоугольника'); - запрашивает координаты верхней правой вершины первого прямоугольника
  8. readln(x2,y2); - считывает введенные координаты
  9. until (x2>x1)and(y2>y1); - условие для повторения запроса координат
  10. writeln('Введите координаты нижней левой вершины второго прямоугольника'); - запрашивает координаты нижней левой вершины второго прямоугольника
  11. readln(x3,y3); - считывает введенные координаты
  12. repeat - повторяет запрос координат до тех пор, пока не будет введен правильный прямоугольник
  13. writeln('Введите координаты верхней правой вершины второго прямоугольника'); - запрашивает координаты верхней правой вершины второго прямоугольника
  14. readln(x4,y4); - считывает введенные координаты
  15. until (x4>x3)and(y4>y3); - условие для повторения запроса координат
  16. x11 := max(min(x1,x2),min(x3,x4)); - находит минимальное значение из максимальной и минимальной координаты по вертикали
  17. x12 := min(max(x1,x2),max(x3,x4)); - находит максимальное значение из минимальной и максимальной координаты по вертикали
  18. y11 := max(min(y1,y2),min(y3,y4)); - находит минимальное значение из максимальной и минимальной координаты по горизонтали
  19. y12 := min(max(y1,y2),max(y3,y4)); - находит максимальное значение из минимальной и максимальной координаты по горизонтали
  20. if (x12-x11>0)and(y12-y11>0) then - проверяет условие для площади пересечения
  21. s:=(x12-x11)*(y12-y11); - вычисляет площадь пересечения
  22. write('Площадь пересечения=',s:0:2); - выводит результат на экран
  23. end. - завершает работу программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы