program oszlopdiagram; uses newdelay,crt,graph; const maxelemszam=640; path = 'c:\langs\pascal\bgi'; {Bgi utvonala} const {diagram=record} bfx=20;bfy=20;jax=600;jay=400; elemszam=10{:byte}; tomb:array[1..elemszam] of integer=(3,5,2,4,5,2,1,10,3,1); tengely=true; felirat=false{:boolean}; szin=3{:byte}; {end;} var xegys,yegys:integer;{d:diagram;} Procedure Szovegesre; begin CloseGraph; {lezarja a grafikus uzemmodot} RestoreCrtMode; {Visszaallitja az InitGraph meghivasa elotti kepernyokezelesi modot} end; Procedure Grafikusra; Var gd,gm : integer; Begin DetectGraph(gd,gm); {detektalja a grafikus eszkozt} InitGraph(gd,gm,path); {inicializalja a grafikus rendszert} End; Procedure Egysinit(var xegys,yegys:integer); var max,i:integer; begin xegys:=round((jax-bfx)/elemszam); max:=tomb[1]; for i:=2 to elemszam do begin if tomb[i]>max then max:=tomb[i]; end; yegys:=round((jay-bfy)/max); end; procedure tengelyek; var sv:integer; begin Egysinit(xegys,yegys); line(bfx,bfy,bfx,jay); line(bfx,jay,jax,jay); sv:=bfx+xegys; while svbfy do begin line(bfx-2,sv,bfx+2,sv); sv:=sv-yegys; end; end; procedure oszlopok; var i:integer; begin Egysinit(xegys,yegys); for i:=1 to elemszam do begin setfillstyle(1,szin); bar(bfx+(i-1)*xegys,jay,bfx+i*xegys,jay-tomb[i]*yegys); end; end; BEGIN Grafikusra; tengelyek; oszlopok; readkey; Szovegesre; END.