Диаграмма в виде примыкающих друг к другу параллелепипедов

program diagramma_pryamougolnaya;

uses graph;
    type        {Каждый элемент диаграммы - запись с двумя полями}

        zapis = record
                data : word;   {Поле данных}
                 txt : string      {Поле текста}
        end;

const   k = 3;           {Количество исходных данных и сами данные}
            ishodn : array[1..k] of zapis = ((data : 135; txt : 'yuksi'),
                                                              (data : 57; txt : 'kaksi'),
                                                              (data : 13; txt : 'kolme'));

var
    m : array[1..k] of zapis;       {Массив отсортированных записей}
    i, j, my : byte;
    sum : word;
    pp : zapis;
    driver, regim, x, y, shag : integer;
    s : string;

begin
    writeln('Введите коэффициент уменьшения высоты гистогpаммы от 1 до 5');
     readln(my);
    sum := 0;   {Используем сумму, чтобы показать долю элемента диаграммы}
  
            for i := 1 to k do sum := sum + ishodn[i].data;
               for i := 1 to k do  {Переписываем исходные данные в буфер m}
                     begin
                          m[i].data := ishodn[i].data;
                          m[i].txt := ishodn[i].txt
                      end;

                for i := 1 to k-1 do     { Соpтиpуем данные  буфера по убыванию }
                        for j := i to k do
                             if m[i].data < m[j].data then  begin
                                  pp := m[i];
                                  m[i] := m[j];
                                  m[j] := pp
                             end;

driver := 9;   {Это VGA}
regim := 2;
InitGraph(driver, regim, 'c:\bp\bgi');
x := GetMaxX div 10;    { Задаем начало гистогpаммы }
y := GetMaxY div 2+200;
shag := x;
SetColor(red);
OutTextXY(GetmaxX-150, 50, 'Press ENTER');
SetColor(green);
OutTextXY(GetMaxX-200, 100, 'Input data:');
i := 1;

   repeat
          SetFillStyle(1, i+1);
          SetColor(i+1);
          Bar3D(x, y – round(m[i].data*GetMaxY/sum/my), x+shag, y, 10, true);
          Str(m[i].data, s);   {Преобразование числовых данных в строку}
          OutTextXY(GetMaxX-175, 115 + i*15, m[i].txt + ' - ' + s);
          x := x + shag;
          i := i + 1
   until i > k;

readln;
CloseGraph;

end.

Комментариев нет:

Отправить комментарий

Если у вас интересные исходники и вы не прочь поделиться, то присылайте daslex@yandex.ru с указанием Темы: Графика Паскаль
К вашей работе будет прикреплено ваше авторство и по желанию добавлена ссылка на ваш сайт.
На одну страницу - Одна работа. На одну работу - Одна ссылка + указание автора


Основное требование - это один файл .pas без сторонних модулей (только с родными. предпочтение Graph).
Можно использовать ассемблерные вставки.

Все что Запускается у меня и работает, я выкладываю. в этом блоге.
Яндекс.Метрика