Показать сообщение отдельно
Старый 11.06.2010, 14:18   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну, в общем, сделал я вариант программки - разбирайтесь. Убрал лишнее, исправил ошибки, и вот:
Код:
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.
Результат:
Название: DDD01.jpg
Просмотров: 110

Размер: 19.3 Кб
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070