Написала программу выводящую трёхмерную диаграмму, данные считываются из файла, созданного мной. Программа правильная, но преподаватель не приняла, потому что она не универсальная. Изменяя количество строк в файле, нужно самостоятельно вносить изменения в код, а необходимо чтобы программа сама прогоняла файл и изменялась сама.
Я думаю, Программу нужно оформить в виде процедуры, но не знаю как точно. помогите пожалуйста.
Код:
Текст программы.
program treug;
uses Graph,crt;
const god:array[1..6] of string=('Milk(max)','Milr(cred)','white(max)','white(cred)','black(max)',
'black(cred)');
cen:array[1..6] of real=(200,180,200,100,200,50);
var
GrDrv:integer; {Графический драйвер}
GrMode:integer; {Графический режим}
GrErr:integer; {Графическая ошибка}
f:text;
s:string;
i,j,gd,gm,x0,y0,w:integer;
mx,h:real;
k:char;
begin
gd:=0;
w:=25; {ширина столбцов}
x0:=50; {левый край диагоаммы}
y0:=420; {нижний край}
mx:=cen[1];
clrscr;
assign(f,'G:\tabl2.txt');
reset(f);
writeln(' TABLICA SHOKOLADA');
writeln;
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
writeln;
writeln('please double press ENTER to continue...');
K:=readkey;
if(readkey=#13)
then
begin
initgraph(gd,gm,'');
for i:=1 to 6 do
if cen[i]>mx then mx:=cen[i]; {находим максимум}
h:=(y0-40)/mx; {масштаб по вертикали}
for i:=1 to 6 do
begin
setcolor(i+1);{цвет}
Setfillstyle(i+1,i+1); {стиль заполнения}
{рисуем параллелепипеды с заданной шириной, шагом
и высотой соответственно значению цен}
Bar3d(x0+4*w*(i-1),y0-round(cen[i]*h),x0+w*(4*i-2),y0,15,topon);
outtextXY(x0+4*w*(i-1),y0+20,god[i]); {выводим по низу наименования}
str(cen[i]:5:2,s);{преобразуем цены в строку}
outtextXY(x0+4*w*(i-1)+w,y0-round(cen[i]*h)-20,s); {выводим цену выше столбика}
end;
readln
end
else
writeln('error, restart application.');
end.
Текст файла.
200 180 milk
200 100 white
200 50 black