Побудова стовпцевих і кругових діаграм

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
АСУ

Інформація про роботу

Рік:
2024
Тип роботи:
Розрахункова робота
Предмет:
Програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка» Кафедра АСУ Розрахункова робота з дисципліни: «Проблемно – орієнтоване програмування» на тему: «Побудова стовпцевих і кругових діаграм» Зміст Вступ 3 1. Огляд літератури 4 2. Формулювання задачі 5 3. Алгоритм розв'язання задачі 6 4. Програмні реалізації алгоритму 8 4.1 Загальна характеристика програми 8 4.2 Призначення 8 4.3 Вхідні дані 8 4.4 Результуючі дані 8 4.5 Структура програми 8 4.6 Таблиця основних ідентифікаторів 9 4.7 Середовище реалізації програми 9 5. Інструкція користувачеві програми 10 6. Контрольні приклади та аналіз результатів їх реалізації 11 Висновки 12 Література 13 ДОДАТКИ 14 Вступ Тема моєї розрахункової є - "Побудова стовбцевих та кругових діаграм". Тема є дуже актуальна і ці діаграми можна використовувати для відображає змінення даних у часі або ілюструє порівняння елементів, для зображення долі кожної величина в загальному об'ємі. Програма будує діаграми за вхідними даними користувача і за цими даними будує і виводить діаграми на екран. Діаграма — графічне зображення, що наочно у вигляді певних геометричних фігур показує співвідношення між різними величинами, які порівнюються Кругові(секторні діаграми) — доволі широко поширений спосіб графічного представлення структури статистичної сукупності, так як ідея цілого дуже наглядно виражається кругом, який представляє всю сукупність. Відносна величина кожного значення зображується у вигляді сектора кругу. Площа сектора відповідає вкладу даного значення в суму значень. Цей вид діаграми зручно використовувати, коли потрібно показати долю кожної величини в загальному об'ємі. Стовпчикова діаграма — абсолютно подібна до лінійного графіка, але один у ній для кожного часового зрізу буде показано стовпчик, що відповідатиме значенню послідовності. Діаграма відображає змінення даних у часі або ілюструє порівняння елементів. 1. Огляд літератури Ознайомлення з діаграмами Матеріал [2] використовувався для ознайомлення з діаграмами. Довідка мови С Матеріал у книзі [1] використовувався для визначення особливостей і лексикону певних засобів мови С, а також для аналізу корисних функцій і бібліотек, які можуть бути корисні при програмній реалізації поставлених задач. Ознайомлення із бібліотекою dos.h У матеріалі [3] розглядаються можливості бібліотеки dos.h, її функції. У нашому випадку матеріал використовувався для визначення інформації про запуск графічного інтерфейсу на екрані. Ознайомлення із бібліотекою graphics.h У матеріалах [4, 5, 6] розглядаються можливості бібліотеки graphics.h, ознайомлення із основними функціями цієї бібліотеки, перегляд прикладу програм із використанням даної бібліотеки. Ця інформація була потрібна для написання програми даного типу. 2. Формулювання задачі Побудова стовпцевих і кругових діаграм. Дану програму можна класифікувати, як "Настільний додаток"(desktop application) ,"Графічна програма","Програма для візуального порівняння даних" в залежності від признаку класифікації. Для реалізації даного проекту потрібно використати бібліотеки - для відображення діаграм на екрані і графічну бібліотеку з потрібними графічними функціями. У даному проекті використовується графічна бібліотека graphics.h, і бібліотека dos.h. 3. Алгоритм розв'язання задачі Загальний порядок роботи програми: 1. Запуск програми. 2. Ініціалізація змінних. 3. Введення даних. 4. Опрацювання даних в функції bar_diadram() для стовпцевих діаграм. 5. Опрацювання даних в circl_diagram() для кругових діаграм. 6. Запуск графічного режиму і виклик функції bar_diadram() і функції circl_diagram(), в головній функції main(). 7. Виведення діаграм на екран. 8. Вихід із графічного режиму і очищення динамічної пам'яті. Порядок роботи функції bar_diadram() : 1. Ініціалізація змінних функції. 2. Ввід даних про кількість елементів (змінна N). 3. Якщо кількість даних, які вводить користувач перевищує обмеження вводу, повернутись на нуль, у інших випадках прожити. 4. Виділення динамічної пам'яті відповідно до числа, яке ввів користувач. 5. Заповнення виділеної пам'яті, даними. 6. Побудова ліній координат. 7. Знаходження максимального числа, по якому визначаємо масштаб стовпців діаграми. 8. Встановлення кольору контурів і їх елементів. 9. Побудова стовпців діаграми. Порядок роботи функції circl_diagram(): 1. Ініціалізація змінних функції. 2. Визначення суми усіх вузлів даних і знаходження 1 градусу діаграми. 3. Встановлення контуру. 4. Визначення розмірів секторів і зафарбовування їх відповідними кольорами. 5. Встановлення кольору прямокутників, їх побудова і виведення даних, які відповідають за відповідний колір(для інформації про сектори). Порядок роботи функції main(): 1. Очищення екрану. 2. Запуск графічного режиму. 3. Виведення діаграм на екран. 4. При натисненні любої клавіші, завершення роботи. 5. Вихід із графічного режиму і звільнення динамічної пам'яті. 4. Програмні реалізації алгоритму 4.1 Загальна характеристика програми Програма написана у середовищі програмування Turbo C, на мові програмування С. Розмір програмного файлу має 3.36 кілобайт, довжина коду 115 рядків. У програмі застосовується графічна бібліотека graphics.h. Назва програмного файлу GRAP_G.cpp. 4.2 Призначення Програма призначена суто для побудови діаграм, за вхідними даними користувача. 4.3 Вхідні дані Вхідними даними є числові дані, які вводить користувач. Кількість даних, які можна вводи`ти обмежена тим числом, яке користувач задав для кількості введених даних. Контроль введення ведеться функцією scanf(). 4.4 Результуючі дані Програма побудує дві діаграми - стовпцеву і кругову по вхідних даних. Стовпцева будується на осі [х, у], кількість стовпців залежить від кількості введених даних. І будується коло, яке розділяється на розділи відповідно до введених даних. 4.5 Структура програми Програма місить декілька функцій. bar_diadram() відповідає за виведення прямокутних діаграм, і потім викликається у функції main(). circl_diagram() відповідає за розподіл кола на сектори, і задає кольори кожному сектору, і викликається у функції main(). Функція main() - це головна функція в якій викликаються усі інші функції, і приймаються вхідні дані. 4.6 Таблиця основних ідентифікаторів Ідентифікатор змінної Зміст у програмі Тип змінної Розмір змінної байт Спосіб формування Призначення змінної  N Інформаційний int 4 Вхідна Вказує кількість даних які буде вводити користувач і розподіл діаграм.  *data Інформаційний float 4 Вхідна Для даних, що будуть вводитись.  color Фізичний int 4 Результуюча Вказує початковий колір сектора.   4.7 Середовище реалізації програми Дана програма написана в середовищі програмування Turbo C, мовою програмування С. Операційна система комп'ютера на якому написана програма - Windows XP Professional. 5. Інструкція користувачеві програми Програма будує дві діаграми (стовпчикову і кільцеву) - за вхідними даними, які вводить користувач. При запуску програми, програма виводить запит на кількість елементів, які буде вводити користувач: " Please write data N = " Після вводу кількості елементів, програма просить ввести самі елементи (їхня кількість повинна дорівнювати, кількості якій користувач ввів): " Please write data " Тепер програма виводить масштаб (в залежності від різниці розмірів усіх даних): " Scale= " Після масштабу програма виводить дві діаграми: - стовпчикову на осі [х, у] - кільцеву, біля якого розміщений опис кольорів - колір і які дані за ним закріплені (число) Приклад роботи програми зображений: Додаток 2 "Робота програми" Програма працює на операціє на операційній системі Windows XP і Windows 7. На Windows 7 програма працює тільки на 32-розрядному типі операційної системи, тому що тут використовується стара графічна бібліотека graphics.h. Для роботи програми у папку з проектом потрібно занести EGAVGA.BGI, який дається з самою програмою. Цей файл (EGAVGA.BGI) - це бібліотека, драйвер відео. Програма працює в повно-екранному режимі. 6. Контрольні приклади та аналіз результатів їх реалізації На рис 6.1 зображено приклад роботи програми. Тут зображено, що користувач ввів число "5", яке відповідає за кількість елементів які будуть вводитись. Пізніше користувач ввів числа "41 20 55 59 9", на основі цих даних програма будує діаграми. Надпис"Scale" показує масштабування стовпцевої діаграми. Прямокутна діаграма масштабується відповідно до найбільшого стовпця (найбільшого числа,яке ввів користувач), опираючись на ці дані вона будує інші стовбці. Стовпці розташовуються на осі "х, у". Кругова діаграма будується наступним чином, коло розділяється на відповідну кількість секторів (кількість секторів залежить від кількості елементів). Усі дані сприймаються як 100%, і відповідно до того яку частину від 100% кожне число займатиме, такий розмір сектора буде побудований. Кожен сектор замальовується відповідним кольором і збоку зображується який колір і яке число за ним закріплене. / Рис 6.1 Контрольний приклад програми Висновки Діаграми можна застосовувати для візуального зображення, порівняння і аналізу певних змін цифрових характеристик явища або наборів цифрових характеристик декількох явищ. Програма локалізована суто для відображення діаграм, що забезпечує швидку обробку даних і відображення діаграм, а також легка у користуванні. Можливе вдосконалення програми в залежності від способу застосування. Вдосконалення можна робити в любому напрямку де можуть використовуватись діаграми, так як це базова програма і її можна вдосконалити відносно під любі потреби. Література 1. Шпак З. Я. Програмування мовою С Львів: Оріяна-Нова, 2006. - 432 с. 2.http://uk.wikipedia.org/wiki/%D0%94%D1%96%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0 3. http://buchavip.narod.ru/Spl/novice24.htm 4. http://malex13.narod.ru/c/c009.htm 5. http://nazachot.ru/referat/program_and_comput/1137-grafika-v-movax-programuvannya-vikoristannya-osnovnix-grafichnix-primitiviv.html 6. http://www.distedu.ru/mirror/_inform/server.inse.kiae.ru/school/node14.html ДОДАТКИ Додаток 1 Код програми: #include <conio.h> #include <stdlib.h> #include <dos.h> #include <graphics.h> #include <stdio.h> #include <string.h> #define max_size 30 float *data; //для даних що будуть вводитися int N; //кількість елементів масиву даних int bar_diadram() { float max,temp;// максимальне значення і допоміжна змінна int scale=1; // для максимального значення даних int el1=50,el2=65,el3; // початкові дані для малювання стовпчиків printf("Pleas write data N = "); scanf("%d",&N) if(N>max_size)return 0; // не перевищувати максимальну кількість даних // зроблено щоб не вийти за межі data = (float*)malloc(N*sizeof(float));// виділяємо динамічну память printf("Please write data\n"); for(int i=0;i<N;i++) scanf("%f",&data[i]); // дані для побудови діаграми setcolor(15); //встановлюємо білий для малювання // будуємо лінії координат line(49,70,49,236); line(49,70,47,78); line(49,70,51,78); line(49,236,(N+1)*15+70,236); line((N+1)*15-8+70,234,(N+1)*15+70,236); line((N+1)*15-8+70,238,(N+1)*15+70,236); //----------------------------------------------------- // знаходимо максимальне число і відповідно до нього масштаб max=data[0]; for(i=1;i<N;i++) if(max<data[i])max=data[i]; if(max>100) { temp=max; do { temp/=10; // знаходимо масштаб так щоб дані були більші 100 scale*=10; }while(temp>=100); } setcolor(4); outtextxy(35,70,"X"); outtextxy((N+1)*15-8+70,242,"Y"); setcolor(8); // встановлюємо колір для контурів printf(" scale=%d",scale); // будуємо діаграму відповідно нашим даним for(i=0;i<N;i++){ el3=200-int(data[i])/scale; bar3d(el1,235,el2,el3+35,5,5);// побудова 3d прямокутника el1+=15; el2+=15; } return 0; } int circl_diagram() { int color=1; // початковий колір сектора long float sum=0,k1=0,k2=0; // sum для знаходження скільки припадає на 1 градус // k1 k2 - задають кути для секторів long float t; // скільки припадає на 1 градус даних for(int i=0;i<N;i++) sum+=data[i]; // визначаємо суму усіх даних t=360/sum; //знаходимо скільки на 1 градус setcolor(15); // задаємо колір контура білий for(i=0;i<N;i++){ setfillstyle(1,color); // колір яким буде сафарбований сектор k2+=t*data[i]; // визначаємо радіус сектора if(color<15)color++; else color=1; // змінюємо кольори секторів sector(100,350,int(k1),int(k2),70,88); // будуємо сектор k1=k2; } // виводимо збоку палітру кольорів і відповідні дані // виведення обмежено 9 щоб не вийти за межі екрану color=1; int el1=0,m; if(N<10)m=N; else m=9; for(i=0;i<m;i++){ setfillstyle(1,color); // колір прямокутника bar(200,257+el1,220,270+el1); // будує прямокутник el1+=16; if(color<15)color++; else color=1; // зміна кольору gotoxy(30,17+i); //розміщення даних printf("%f",data[i]); } if(m==9){ gotoxy(30,17+i); printf("......"); } //--------------------------------------------------------------------- return 0; } int main() { clrscr(); // очищаємо екран // ініціалізація графічного режиму int gdriver=DETECT, gmode, errorcode; initgraph(&gdriver,&gmode,""); //------------------------------------ bar_diadram(); circl_diagram(); getch(); closegraph(); // вихід із графічного режиму free(data); return 0; } Додаток 2 Робота програми: / / /
Антиботан аватар за замовчуванням

06.12.2015 15:12-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!