Показать сообщение отдельно
Старый 23.12.2010, 11:27   #1 (permalink)
Хелен
Sparkling
 
Аватар для Хелен
 
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
По умолчанию Поправить прогу с графическим режимом

Написала программу выводящую трёхмерную диаграмму, данные считываются из файла, созданного мной. Программа правильная, но преподаватель не приняла, потому что она не универсальная. Изменяя количество строк в файле, нужно самостоятельно вносить изменения в код, а необходимо чтобы программа сама прогоняла файл и изменялась сама.
Я думаю, Программу нужно оформить в виде процедуры, но не знаю как точно. помогите пожалуйста.

Код:
Текст программы.

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
Хелен вне форума   Ответить с цитированием
Ads

Яндекс

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