Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > столбиковая диаграмма


Автор: Varant 22.6.2010, 00:04
Написать программу, которая выводит на экран столбиковую диаграмму, представляющую оптовые и розничные цены на различные наименования кофе. Исходные данные сформировать в текстовом файле.
Построение диаграммы оформить в виде процедуры. Параметра процедуры: количество наименований; массив значений оптовых цен; массив значений розничных цен; массив наименований. Наименования товаров разместить вертикальной под осью абсцисс.

Подскажите, все ли правильно в задаче? И как понять "Наименования товаров разместить вертикальной под осью абсцисс."?

Код

uses graph;

var    i, j, x0, y0, w:integer;
    s: string;
    f: text;
    mkofe_f: array [1..444] of real;
    n, dc: integer;
    h, max, min: real;


procedure Graphinterface;
var    driver, mode, error:    integer;
        s: string;
begin
    driver:=detect;
    s:=' ';
    Initgraph(driver, mode, s);
    error:=GraphResult;
    if error<>GrOk then
    begin
        writeln(GraphErrorMsg(Error));
        Halt(error);
    end;
end;




begin
    assign(f, 'kofe.txt');
    reset(f);

    readln(f, n);        

    writeln('Vvedite kol-vo tovara: ');    readln(dc); 

    if (dc = 0) then
     exit
    else
    begin

        if (dc > n) then
        begin
        writeln('Ne hvataet dannyh v file!'); 
        readln;
        exit;
        end
         else
        begin

            for i:=1 to dc do
            begin
            read(f, mkofe_f[i]);      
            end;


    {max}
    max:=mkofe_f[1];
    for i:=2 to dc do
        if (max < mkofe_f[i]) then
        max:=mkofe_f[i];

    {min}
    min:=mkofe_f[1];
    for i:=2 to dc do
        if (min > mKurs_f[i]) then
        min:=mkofe_f[i];


    Graphinterface;


    w:=40;            
    x0:=155;        
    y0:=420;        
    h:=(y0-90)/max;        


  randomize;

 
  i:=random(14);
  setcolor(i+1);        
  Setfillstyle(i+1,i+1);    

  Bar3d(x0,y0-round(max*h),x0+2*w,y0, 15,topoff);
  str(max:2:4, s);
  outtextXY(x0+18,y0-round(max*h)-40, s);
  outtextXY(x0+30,y0+20, 'max');


  i:=random(14);
  setcolor(i+1);        
  Setfillstyle(i-1,i+1);    

  Bar3d(x0+3*w,y0-round(min*h),x0+5*w,y0, 15,topoff);
  str(min:2:4, s);
  outtextXY(x0+3*w+18,y0-round(min*h)-40, s);
  outtextXY(x0+3*w+30,y0+20, 'min');

 end;

 end;

readln;
end.


Автор: Ozzя 25.6.2010, 10:16
Цитата

Подскажите, все ли правильно в задаче?

Нет.

Цитата

Построение диаграммы оформить в виде процедуры.

Не сделано.
Остальное - не проверялось. Ибо, "assign(f, 'kofe.txt');". Файл 'kofe.txt' проверяющий должен сам набирать? Не дождетесь (С)
Цитата

 И как понять "Наименования товаров разместить вертикальной под осью абсцисс."?

Легко.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)