ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Побудова діаграм
         

     

    Інформатика, програмування

    Побудова діаграм

    Нехай є послідовність позитивних дійсних чисел a1, a2, ..., an, позначає результати будь-яких вимірювань (наприклад, висоти вершин гір над рівнем моря, площі держав, середні оцінки учнів класу і т.д.). Потрібно побудувати візуалізоване представлення цієї послідовності з метою порівняння отриманих результатів. У таких випадках використовують діаграми.

    1. Кругові діаграми

    У кругової діаграмі кожного елемента послідовності відповідає сектор, градусна міра якого пропорційна величині елемента.

    Для побудови кругової діаграми необхідно підсумувати всі елементи послідовності, після чого знайти відносини кожного з елементів, до отриманої суми (так буде обчислено, яку частину кола потрібно поставити у відповідність для розрахунку, -- тобто розраховуються частки кола, що припадають на цю величину, якщо все коло прийняти рівним 1). Всі ці розрахунки можна уявити формулами  . Потім ці відносні величини переводяться в градуси: , після чого можна приступати до побудови діаграми.

    Алгоритм в цьому випадку буде таким:

    обчислити суму елементів послідовності;

    знайти величину сектору, що відповідає кожній величиною;

    побудувати все сектори у графічному режимі (у результаті має вийти повне коло). Бажано кожен сектор будувати своїм кольором, або використовувати різну штрихування, якщо сектори одноколірні.

    Програма побудови кругової діаграми з цього алгоритму представлена нижче:

    (Круговая діаграма (с) А.П. Шестаков, 2001)

    program Kr_D;

    Uses Graph;

    Var a, S: Real; I: Byte; G, M: Integer;

    Xc, Yc, R: Integer; (координати центру кола і його радіус)

    F: Text; (файл містить дані для побудови діаграми)

    Alpha: Integer; (кут, відповідний черговий величиною)

    SAngle: Integer; Stroka: String;

    Begin

    Assign (F, '1. Dat '); Reset (F);

    S: = 0; (сума елементів послідовності)

    While Not Eof (F) Do

    begin Readln (F, a); S: = S + a end;

    reset (f); G : = Detect; M: = 0;

    initgraph (G, M,''); Xc: = GetMaxX Div 2; Yc: = GetMaxY Div 2;

    R: = 100; SAngle: = 0; i: = 1;

    While Not Eof (f) Do begin

    Readln (F, a); Alpha: = round (A/S * 360); (обчислення кута)

    setcolor (i mod 16 + 1); setfillstyle (1, i mod 16 + 1);

    (побудова сектору, що відповідає величині)

    sector (Xc, Yc, SAngle, SAngle + Alpha, R, R);

    SAngle : = SAngle + Alpha; i: = i + 1;

    (зазначимо, якого кольору яка величина відповідає)

    bar (Xc 200, Yc-250 + (i-1) * 20, Xc 220, Yc-250 + (i-1) * 20 +15);

    str (a: 8:2, stroka);

    outtextxy (Xc + 230, Yc - 250 + 5 + (i - 1) * 20, stroka) end;

    readln; close (F); closegraph End.

    Результат роботи програми для вказаного на малюнку набору чисел:

    2. Стовпчасті діаграми

    Для побудови діаграми виділимо на екрані прямокутну область з координатами відповідно верхнього лівого кута (Xlv, Ylv) і правого нижнього (Xpn, Ypn). Висота стовпця діаграми, що відповідає максимальному елементу послідовності, буде збігатися з висотою прямокутника. Ширина стовпця буде залежати від кількості елементів послідовності: чим більше компонент, тим меншою буде ширина. Таким чином, для побудови діаграми потрібно визначити кількість компонентів послідовності і максимальний елемент послідовності. Висота vi чергового стовпця діаграми на екрані буде визначатися формулою де xmax -- максимальний елемент послідовності, xi - черговий елемент послідовності.

    Алгоритм побудови діаграми наступний:

    визначити кількість елементів послідовності і її максимальний елемент;

    згідно зазначеній формулі побудувати стовпці діаграми. Їх ширина на екрані може бути розрахована за формулою де n -- кількість елементів послідовності.

    Програма побудови стовпчастий діаграми з цього алгоритму представлена нижче:

    (Стовпчасті діаграма (с) А.П. Шестаков, 2001)

    program Stol_D;

    Uses Graph;

    Var a, xmax: Real; I, n: Byte; G, M: Integer;

    F: Text; (файл містить дані для побудови діаграми)

    Stroka: String;

    Xlv, Ylv, Xpn, Ypn: Integer; (координати вікна виводу діаграми)

    Begin

    Assign (F, '1. Dat '); Reset (F);

    if not eof (f) then begin readln (f, xmax); n: = 1 end else n: = 0;

    While Not Eof (F) Do

    begin Readln (F, a); if a> xmax then xmax: = a; n: = n + 1 end;

    reset (f); G : = Detect; M: = 0;

    initgraph (G, M,''); Xlv: = 50; Ylv: = 50; Xpn: = GetMaxX-100; Ypn: = GetMaxY-50;

    i: = 0; (номер стовпчика)

    While Not Eof (f) Do

    begin

    Readln (F, a);

    setcolor (i mod 16 + 1); setfillstyle (1, i mod 16 + 1);

    (черговий стовпець)

    bar (round (Xlv + i * (Xpn-Xlv)/n), Ypn,

    round (Xlv + (i +1) * (Xpn-Xlv)/n), round (Ypn-(Ypn-Ylv)/xmax * a ));

    i: = i + 1;

    (зазначимо, якого кольору яка величина відповідає)

    bar (getMaxx-70, 50 + (i-1) * 20, getMaxx-50, 50 + (i-1) * 20 +15);

    str (a: 8:2, stroka);

    outtextxy (getMaxx-40, 50 + (i-1) * 20 +8, stroka);

    end;

    readln; close (F); closegraph

    End.

    Результат праці програми для вказаного на малюнку набору чисел:

    Для кращого сприйняття діаграми було б доцільно побудувати вертикальну вісь з розміткою по ній, що в даній програмі відсутня.

    3. Лінійні діаграми

    При побудові лінійних діаграм кожної величиною відповідає точка, розташована на певній висоті відносно початку відліку (висота розраховується так само, як і при побудові стовпчастих діаграм), всі крапки з'єднуються лініями. У результаті виходить ламана. Такого роду діаграми найчастіше ладу в тих випадках, коли необхідно візуалізувати динаміку зміни величин.

    Програма аналогічна програмі побудови стовпчастих діаграм і наведена нижче.

    (Лінійна діаграма (с) А.П. Шестаков, 2001)

    program Stol_D;

    Uses Graph;

    Var a, xmax: Real; I, n: Byte; G, M: Integer;

    F: Text; (файл містить дані для побудови діаграми)

    Stroka: String; Yn, Yk: Integer;

    Xlv, Ylv, Xpn, Ypn: Integer; (координати вікна виводу діаграми)

    Begin

    Assign (F, '1. Dat '); Reset (F);

    if not eof (f) then begin readln (f, xmax); n: = 1 end else n: = 0;

    While Not Eof (F) Do

    begin Readln (F, a); if a> xmax then xmax: = a; n: = n + 1 end;

    reset (f); G : = Detect; M: = 0;

    initgraph (G, M,''); Xlv: = 50; Ylv: = 50; Xpn: = GetMaxX-100; Ypn: = GetMaxY-50;

    line (xlv, ylv, xlv, ypn); line (xlv, ypn, xpn, ypn);

    i: = 0; (номер точки)

    readln (f, a);

    Yn: = round (Ypn-(Ypn-Ylv)/xmax * a);

    str (a: 5:1, stroka);

    outtextxy (round (Xlv + i * (Xpn-Xlv)/n) -20, Ypn 20, stroka);

    While Not Eof (f) Do

    begin

    setcolor (i mod 16 + 1); setfillstyle (1, i mod 16 + 1);

    (зазначимо, якого кольору яка величина відповідає)

    Readln (F, a);

    Yk: = round (Ypn-(Ypn-Ylv)/xmax * a);

    (чергова лінія)

    line (round (Xlv + i * (Xpn-Xlv)/n), Yn,

    round (Xlv + (i +1) * (Xpn-Xlv)/n), Yk);

    i: = i + 1;

    str (a: 5:1, stroka);

    outtextxy (round (Xlv + i * (Xpn-Xlv)/n) -20, Ypn 20, stroka);

    Yn: = Yk; (запам'ятовуємо положення черговий точки)

    end;

    readln; close (F); closegraph

    End.

    Результат роботи програми для вказаного на малюнку набору чисел:

    Всі представлені тут програми можуть бути об'єднані в одну програму із загальним меню, де користувачеві надається можливість вибрати вид діаграми.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.comp-science.narod.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status