Замените цикл repeat-until на другой
var x1,x2,y1,x3,x4,y2,s:real;
begin
clrscr;
repeat
writeln('Введите абциссы вертикальных сторон первого прямоугольника x2>x1>=0');
readln(x1,x2);
until(x1>=0)and(x2>x1);
repeat
write('Ордината верхней стороны y1>0 y1=');
readln(y1);
until y1>0;
repeat
writeln('Введите абциссы вертикальных сторон второго прямоугольника x4>xx>=0');
readln(x3,x4);
until(x3>=0)and(x4>x3);
repeat
write('Ордината верхней стороны y2>0 y2=');
readln(y2);
until y2>0;
if (x3>=x2)or(x4<=x1) then write('Прямоугольники не пересекаются!')
else
begin
if y1>=y2 then
begin
if(x3>=x1)and(x4<=x2)then s:=(x4-x3)*y2 else
if(x3>=x1)and(x4>=x2)then s:=(x2-x3)*y2 else
if(x3<=x1)and(x4>=x2)then s:=(x2-x1)*y2 else
if(x3<=x1)and(x4<=x2)then s:=(x4-x1)*y2
end
else
begin
if(x3>=x1)and(x4<=x2)then s:=(x4-x3)*y1 else
if(x3>=x1)and(x4>=x2)then s:=(x2-x3)*y1 else
if(x3<=x1)and(x4>=x2)then s:=(x2-x1)*y1 else
if(x3<=x1)and(x4<=x2)then s:=(x4-x1)*y1
end;
write('Прямоугольники пересекаются, площадь пересечения=',s:0:2);
end;
readln
end.
Объяснение:
1. Наливаем воду в 9-ти литровое ведро
2. Переливаем в 5-ти литровое ведро
3. Остается 4 литра
4. Выливаем из 5-ти литрового ведра воду, и переливаем в 5-ти литровое ведро оставшиеся 4 литра
5. Снова набираем воду в 9-ти литровое ведро
6. Переливаем в 5-ти литровое ведро 1 литр к тем 4-рём которые там уже налиты. В 9-ти литровом ведре остается 8 литров
7. Выливаем воду из 5-ти литрового ведра
8. Переливаем от оставшихся 8 литров в 5-ти литровое ведро
9. В 9-ти литровом ведре остается 3 литра воды