а) Определить, принадлежат ли все точки одного прямоугольника второму.
б) Определить, пересекаются ли эти прямоугольники.
Код: Выделить всё
CLS
PRINT TAB(20); "Программа определяет пересекаются ли 2 прямоугольника а"
PRINT TAB(20); "также принадлежность всех точек одного прямоугольника"
PRINT TAB(20); "к другому,при заданных координат нижнего левого угла,"
PRINT TAB(20); "сторон, каждого из них"
PRINT
PRINT "Координаты и размеры сторон первого прямоугольника"
INPUT "Абцисса нижнего угла: ", x1
INPUT "Ордината нижнего угла: ", y1
1 : INPUT "Высота: ", a1
IF a1 = 0 OR a1 < 0 THEN
PRINT "Высота в прямоугольнике всегда должна быть больше 0"
GOTO 1
END IF
2 : INPUT "Длина: ", b1
IF b1 = 0 OR b1 < 0 THEN
PRINT "Длинна в прямоугольнике всегда должна быть больше 0"
GOTO 2
END IF
PRINT "Координаты и размеры сторон второго прямоугольника"
INPUT "Абцисса нижнего угла: ", x11
INPUT "Ордината нижнего угла: ", y11
3 : INPUT "Высота: ", a11
IF a11 = 0 OR a11 < 0 THEN
PRINT "Высота в прямоугольнике всегда должна быть больше 0"
GOTO 3
END IF
4 : INPUT "Длинна: ", b11
IF b11 = 0 OR b11 < 0 THEN
PRINT "Длинна в прямоугольнике всегда должна быть больше 0"
GOTO 4
END IF
'Находим координаты центра для первого прямоугольника
x2 = x1 + b1
x4 = x1
x3 = x2
y3 = y1 + a1
y2 = y1
y4 = y3
xctr1 = (x1 + x2 + x3 + x4) / 4
yctr1 = (y1 + y2 + y3 + y4) / 4
'Находим координаты центра для второго прямоугольника
x22 = x11 + b11
x44 = x11
x33 = x22
y33 = y11 + a11
y22 = y11
y44 = y33
xctr2 = (x11 + x22 + x33 + x44) / 4
yctr2 = (y11 + y22 + y33 + y44) / 4
' Определение
IF ABS(xctr1 - xctr2) <= (b1 + b11) / 2 AND ABS(yctr1 - yctr2) <= (a1 + a11) / 2 THEN
PRINT "Прямоугольники пересекаются"
ELSE
PRINT "Прямоугольники не пересекаются"
END IF
IF x1 = x11 AND y1 = y11 AND a1 = a11 AND b1 = b11 THEN
PRINT "Прямоугольники совпадают"
ELSEIF x11 <= x1 AND y11 >= y1 AND a11 >= a1 AND b11 >= b1 THEN
PRINT "1-ый прямоугольник принадлежит 2-ому"
ELSEIF x1 <= x11 AND y1 >= y11 AND a1 >= a11 AND b1 >= b11 THEN
PRINT "2-ой прямоугольник принадлежит 1-ому"
END IF
END
Все дело в том, что если один из прямоугольников находится внутри другого, программа пишет, что они пересекаются, а должна "Прямоугольники не пересекаются ,один из принадлежит ..."