Ну, в общем, сделал я вариант программки - разбирайтесь. Убрал лишнее, исправил ошибки, и вот:
Код:
program Lab;
uses Crt,Graph;
const
N=10;
var
DriverVar,ModeVar,Width,Dummy:integer;
A:array[1..N] of integer;
I,X,Y:integer;
b:boolean;
S:String;
begin;
Clrscr;
Randomize;
Writeln('Initial array:');
for I:=1 to N do
begin
A[I]:= Random(130)-30;
Write(A[I],' ');
end;
Writeln;
Repeat
b:=true;
for I:=1 to N-1 do
If (A[I]<=0) and (A[I+1]>0) then
begin
Dummy:=A[I];
A[I]:=A[I+1];
A[I+1]:=Dummy;
b:=false;
end;
Until b;
Writeln('Array after the element rearrangement:');
for I:=1 to N do Write(A[I],' ');
WriteLn;
WriteLn('Press "Enter" to continue...');
ReadLn;
DriverVar:=Detect;
InitGraph(DriverVar,ModeVar,'');
ClearDevice;
SetLineStyle(SolidLn,0,ThickWidth);
setbkcolor(1);
setcolor(14);
Line(40,10+10*Round((GetMaxY-20)/13),
GetMaxX,10+10*Round((GetMaxY-20)/13));
Line(40,10,40,10+13*Round((GetMaxY-20)/13));
SetTextStyle(DefaultFont, HorizDir, 1);
SetTextJustify(RightText,CenterText);
For i:=0 to 13 do
begin
STR((i-3)*10:4,S);
Y:=10+(13-i)*ROUND((GetMaxY-20)/13);
Line(40,Y,34,Y);
OutTextXY(30,Y,S);
end;
Width:=((GetMaxX-40) div N)-10;
For i:=1 to N do
begin
SetFillstyle(1,2);
X:=40+(((GetMaxX-40) div N) div 2)+((GetMaxX-40) div N)*(i-1);
Y:=10+10*ROUND((GetMaxY-20)/13)-ROUND((GetMaxY-20)/130*A[i]);
Bar(X-(Width div 2),10+10*ROUND((GetMaxY-20)/13),
X+(Width div 2),Y);
end;
ReadKey;
CloseGraph;
end.
Результат: