Хелен
Sparkling
- Регистрация
- 28 Сен 2010
- Сообщения
- 98
- Реакции
- 2
- Баллы
- 0
Поправить прогу с графическим режимом
Написала программу выводящую трёхмерную диаграмму, данные считываются из файла, созданного мной. Программа правильная, но преподаватель не приняла, потому что она не универсальная. Изменяя количество строк в файле, нужно самостоятельно вносить изменения в код, а необходимо чтобы программа сама прогоняла файл и изменялась сама.
Я думаю, Программу нужно оформить в виде процедуры, но не знаю как точно. помогите пожалуйста.
Текст файла.
200 180 milk
200 100 white
200 50 black
Написала программу выводящую трёхмерную диаграмму, данные считываются из файла, созданного мной. Программа правильная, но преподаватель не приняла, потому что она не универсальная. Изменяя количество строк в файле, нужно самостоятельно вносить изменения в код, а необходимо чтобы программа сама прогоняла файл и изменялась сама.
Я думаю, Программу нужно оформить в виде процедуры, но не знаю как точно. помогите пожалуйста.
Код:
Текст программы.
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