Предмет: Информатика,
автор: TequilaSunrise
помогите, пожалуйста, буду очень благодарна (pascal)
Приложения:
Ответы
Автор ответа:
1
Очень многое проясняет картинка.
Площадь (на рисунке она заштрихована) вычисляется как
S = [ min(x₂,x₄) - max(x₁,x₃) ] × min(y₁,y₃)
Очевидно, что если площадь равна нулю или отрицательна, то прямоугольники не пересекаются, и это избавляет нас от разных глупых предварительных проверок со сложными условиями.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!
begin
var (x1,y1):=ReadReal2('x1 и y1:');
var x2:=ReadReal('x2:');
var (x3,y3):=ReadReal2('x3 и y3:');
var x4:=ReadReal('x4:');
var s:=(Min(x2,x4)-Max(x1,x3))*Min(y1,y3);
if s>0 then Writeln('Площадь равна ',s)
else Writeln('Прямоугольники не пересекаются')
end.
Пример
x1 и y1: -5 7
x2: 4
x3 и y3: -6.2 3.8
x4: 9.1
Площадь равна 34.2
Площадь (на рисунке она заштрихована) вычисляется как
S = [ min(x₂,x₄) - max(x₁,x₃) ] × min(y₁,y₃)
Очевидно, что если площадь равна нулю или отрицательна, то прямоугольники не пересекаются, и это избавляет нас от разных глупых предварительных проверок со сложными условиями.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!
begin
var (x1,y1):=ReadReal2('x1 и y1:');
var x2:=ReadReal('x2:');
var (x3,y3):=ReadReal2('x3 и y3:');
var x4:=ReadReal('x4:');
var s:=(Min(x2,x4)-Max(x1,x3))*Min(y1,y3);
if s>0 then Writeln('Площадь равна ',s)
else Writeln('Прямоугольники не пересекаются')
end.
Пример
x1 и y1: -5 7
x2: 4
x3 и y3: -6.2 3.8
x4: 9.1
Площадь равна 34.2
Приложения:
Похожие вопросы
Предмет: Химия,
автор: gavrik55
Предмет: Английский язык,
автор: superivan08
Предмет: Английский язык,
автор: sonyakononchenko
Предмет: Химия,
автор: Пелагея1337
Предмет: Математика,
автор: Vvvvvvv7