Найти площадь, общую для обоих прямоугольников - 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. - завершает работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д