Цитата:
Сообщение от Dram
вот кажись узнал полностью условия. дан квадрат 1000на1000 в нем. нужно вырезать прямоугольники. определенного размера,определенное количество раз. размер прямоугольников(лев нижний и правый верхний угол) и их количество задается с клафиатуры. и прога далжна выдовать пелучится вырезать или нет. А можно сразу прогу? а то уже сроки поджимают.
|
Можно. Хотя, по-моему, проще самому написать, чем в чужой разбираться. Ну как угодно:
Код:
CONST
Nmax=10; {Max number of rectangles}
VAR
i,j,N:INTEGER;
b:BOOLEAN;
X1,Y1,X2,Y2:ARRAY[1..Nmax] of INTEGER;
BEGIN
Write('Number of rectangles = ');
ReadLn(N);
b:=TRUE;
i:=0;
REPEAT
INC(i);
REPEAT
Write('Right Top X of rectangle N',i,' = ');
ReadLn(X1[i]);
Write('Right Top Y of rectangle N',i,' = ');
ReadLn(Y1[i]);
Write('Left Bottom X of rectangle N',i,' = ');
ReadLn(X2[i]);
Write('Left Bottom Y of rectangle N',i,' = ');
ReadLn(Y2[i]);
IF (X1[i]<=X2[i]) OR (Y1[i]<=Y2[i]) THEN
Writeln ('Wrong values!');
UNTIL (X1[i]>X2[i]) AND (Y1[i]>Y2[i]);
IF (X1[i]>1000) OR (Y1[i]>1000) OR (X2[i]<0) OR (Y2[i]<0)
THEN
BEGIN
b:=FALSE;
WriteLn('Figure N',i,' is out of range!');
END;
IF b THEN
BEGIN
FOR j:=1 TO i-1 DO
IF ((X1[i]>X2[j]) AND (X2[i]<X1[j]))
AND
(((Y1[i]>Y2[j]) AND (Y2[i]<Y1[j])) OR
((Y2[i]<Y1[j]) AND (Y1[i]>Y2[j]))) THEN
BEGIN
b:=FALSE;
WriteLn('Figure N',i,' overlaps figure N',j);
END;
END;
UNTIL (b=FALSE) OR (i=N);
IF b AND (i=N) THEN WriteLn('Everything is OK!');
ReadLn;
END.