Помогите, пожалуйста, буду очень благодарна (pascal)

0 голосов
23 просмотров

Помогите, пожалуйста, буду очень благодарна (pascal)


image

Информатика (8.9k баллов) | 23 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Очень многое проясняет картинка.
Площадь (на рисунке она заштрихована) вычисляется как
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


image
(150k баллов)
0

спасибо огромное! ❤️