Переписать программу с Turbo Pascal на Pascal ABC

Andreas Tran

Помогите пожалуйста перевести код с Turbo Pascal на Pascal ABC
uses graph,crt;
const n=20; //размер массива
type stb=record //тип столбец=запись
         x,y,h,c:integer //поля координаты левого нижнего угла, высота и цвет
         end;
     mas=array[1..n] of stb;//тип массива
procedure draw(st:stb;w:integer); //рисование 1 столбика, w-ширина
begin
setfillstyle(1,st.c);//сплошная заливка указанным цветом
bar(st.x,st.y-st.h,st.x+w,st.y);//закрашенный прямоугольник
end;
var arr:mas;
    i,j,k,w,y,x,bh,bc:integer;
    f:boolean;
begin
randomize;
initgraph(i,j,'');
w:=getmaxX div (n+1);//ширина столбцов с учетом отступов слева и справа
y:=getmaxY-50;//основание столбцов
for i:=1 to n do //присвоение значений
 begin
  arr[i].y:=y;//координата низа
  arr[i].h:=10+random(y-20);//высота
  arr[i].x:=i*w;//координата левой стороны
  arr[i].c:=i+1;/свет
  if arr[i].c mod 8=0 then arr[i].c:=5;
  draw(arr[i],w)//рисование столбца
 end;
for i:=1 to n-1 do//сортировка выбором по авсоте столбцов, это сам изучай
 begin
  x:=i;
  for j:=i+1 to n do
  if arr[j].h<arr[x].h then x:=j;
  bh:=arr[i].h;
  arr[i].h:=arr[x].h;
  arr[x].h:=bh;
  bc:=arr[i].c;
  arr[i].c:=arr[x].c;
  arr[x].c:=bc;
  delay(500); //после каждого шага задержка
  cleardevice;//очистка экрана
  for k:=1 to n do
  draw(arr[k],w); //рисование нового массива
 end;
 outtextXY(100,20,'Sortirovka zavershena, press Enter');
 readln
 end.
2 ответа

Andreas Tran

uses graphabc,crt;
const n=20; //Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ*
const
 colors:array [1..4] of integer=(clYellow,clGreen,ClBlue,clRed);
type stb=record //ГІГЁГЇ ñòîëáåö=Г§Г*ГЇГЁГ±Гј
         x,y,h,c:integer //ïîëÿ êîîðäèГ*Г*ГІГ» ëåâîãî Г*ГЁГ¦Г*ГҐГЈГ® ГіГЈГ«Г*, âûñîòГ* ГЁ öâåò
         end;
     mas=array[1..n] of stb;//ГІГЁГЇ Г¬Г*Г±Г±ГЁГўГ*
procedure draw(st:stb;w:integer); //ðèñîâГ*Г*ГЁГҐ 1 ñòîëáèêГ*, w-øèðèГ*Г*
begin
//  SetPenColor(st.c);
  setbrushcolor(st.c);
  setbrushstyle(bsSolid );
//  setfillstyle(1,st.c);//ñïëîøГ*Г*Гї Г§Г*ëèâêГ* ГіГЄГ*Г§Г*Г*Г*ûì öâåòîì
  FillRect(st.x,st.y-st.h,st.x+w,st.y);//Г§Г*ГЄГ°Г*ГёГҐГ*Г*ûé ïðÿìîóãîëüГ*ГЁГЄ
end;
var arr:mas;
    i,j,k,w,y,x,bh,bc:integer;
    f:boolean;
begin
randomize;
w:=windowWidth div (n+1);//øèðèГ*Г* ñòîëáöîâ Г± ó÷åòîì îòñòóïîâ ñëåâГ* ГЁ Г±ГЇГ°Г*ГўГ*
y:=windowHeight-50;//îñГ*îâГ*Г*ГЁГҐ ñòîëáöîâ
j:=0;
for i:=1 to n do //ïðèñâîåГ*ГЁГҐ Г§Г*Г*Г·ГҐГ*ГЁГ©
 begin
  arr[i].y:=y;//êîîðäèГ*Г*ГІГ* Г*ГЁГ§Г*
  arr[i].h:=10+random(y-20);//âûñîòГ*
  arr[i].x:=i*w;//êîîðäèГ*Г*ГІГ* ëåâîé ñòîðîГ*Г»
  if j>=4 then
    j:=1
  else
    inc(j);
  arr[i].c:=colors[j]; //öâåò
//  if arr[i].c mod 8=0 then arr[i].c:=5;
  draw(arr[i],w)//ðèñîâГ*Г*ГЁГҐ ñòîëáöГ*
 end;
for i:=1 to n-1 do//ñîðòèðîâêГ* âûáîðîì ГЇГ® Г*âñîòå ñòîëáöîâ, ГЅГІГ® Г±Г*Г¬ èçó÷Г*Г©
 begin
  x:=i;
  for j:=i+1 to n do
  if arr[j].h<arr[x].h then x:=j;
  bh:=arr[i].h;
  arr[i].h:=arr[x].h;
  arr[x].h:=bh;
  bc:=arr[i].c;
  arr[i].c:=arr[x].c;
  arr[x].c:=bc;
  delay(500); //ïîñëå ГЄГ*æäîãî ГёГ*ГЈГ* Г§Г*äåðæêГ*
  clearwindow;//î÷èñòêГ* ГЅГЄГ°Г*Г*Г*
  for k:=1 to n do
  draw(arr[k],w); //ðèñîâГ*Г*ГЁГҐ Г*îâîãî Г¬Г*Г±Г±ГЁГўГ*
 end;
   textout(100,20,'Sortirovka zavershena, press Enter');
 readln
 end.


Andreas Tran

Конец бы чуть заменил
setbrushstyle(bsClear);
setfontsize(12);
textout(100,20,'Сортировка завершена');