Найти площадь, общую для обоих прямоугольников - 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.
Объяснение кода листинга программы
- Функция min(a,b:real):real; - находит минимальное значение из двух чисел a и b
- Функция max(a,b:real):real; - находит максимальное значение из двух чисел a и b
- var x1,y1,x2,y2,x3,y3,x4,y4,x11,y11,x12,y12,s:real; - объявляет переменные для координат прямоугольников и площади пересечения
- 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); - вычисляет площадь пересечения
- write('Площадь пересечения=',s:0:2); - выводит результат на экран
- end. - завершает работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д