типу). У проекті ми використали такі масиви: oc[8] – масив оцінок, які поставили судді(8 елементів), kvn[4] – масив, що складається з 4 елементів типу command(структура).
Структури – це сукупність різнорідних даних, що описуються і обробляються як одне ціле. Структури використовують для зберігання комбінованої інформації, яка може складатися з чисел, символів, рядків, масивів (у нашому випадку структурою є
дані, які стосуються команд КВН: ім’я(name), бали(oc[5]), середній бал(results)).
У програмі структуру записуємо у файл Yarik2.dat. Для доступу до файлу використовуємо вказівник на файл (*iop).
2 ТЕХНІЧНИЙ ПРОЕКТ
Опис програми
Програма складається з 7 функцій. А саме:
menu() – функція меню, яка дає можливість вибирати режими роботи програми;
save() – функція збереження даних у файл yarik2.dat;
load() – завантаження даних з файлу yarik2.dat;
new_zapus() – функція вводу нових даних (назв команд, поточних оцінок і обчислення середнього арифметичного);
new_marks() – функція вводу нових поточних оцінок і обчислення середнього балу за всі пройдені конкурси;
vuvid() – вивід результатів на екран;
sort() – функція, яка сортує дані по середньому балу.
Функція меню (menu()) викликається з головної функції main(). Вона викликає функції new_marks(), new_zapus(), vuvid() в залежності від вибраного режиму роботи програми.
Функція вводу нових даних викликає функції сортування, збереження даних у файл та меню.
Функція вводу нових поточних оцінок також викликає ті ж функції, що і вводу нових даних.
Функція виводу викликає функції завантаження даних з файлу, сортування та меню.
Блок-схема алгоритму та її опис
Програма складається з 7 функцій. Нижче наведені блок – схеми кожної з них.
2.2.1 Основна програма.
Блок 1 : Початок.
Блок 2 : Очистка екрану, встановлення синього кольору фону, і жовтого кольру тексту;
Блок 3 : Виклик функції меню;
Блок 4 :Кінець.
2.2.2 Функція меню.
Блок 1 : Вхід.
Блок 2 : Ввід пункта меню
Блок 3 : Умова q=1
Блок 4 : Виклик функції вводу нових даних
Блок 5 : Умова q=2
Блок 6 :Виклик функції вводу поточних результатів
Блок 7 : Умова q=3
Блок 8 : Виклик функції виводу даних на екран
Блок 9 : Вихід.
2.2.3 Функція запису даних у файл
Блок 1 : Вхід.
Блок 2 : Умова відкриття файлу =NULL
Блок 3 : Вивід повідомлення.
Блок 4 : Вихід з програми.
Блок 5 : Цикл 0 до n (n=4).
Блок 6 : Умова запису структури у файл !=1
Блок 7 : Вивід повідомлення.
Блок 8 : Закриття файлу.
Блок 9 : Вихід
2.2.4 Функція зчитування даних з файлу.
Блок 1 : Вхід.
Блок 2 : Умова відкриття файлу =NULL
Блок 3 : Вивід повідомлення.
Блок 4 : Вихід з програми.
Блок 5 : Цикл 0 до n (n=4).
Блок 6 : Умова зчитування структури з файлу !=1
Блок 7 : Вивід повідомлення.
Блок 8 : Закриття файлу.
Блок 9: Вихід.
2.2.5 Функція сортування
Блок 1 : Вхід.
Блок 2 : Цикл 0 до n (n=4).
Блок 3 : Присвоєння змінним max i k значень kvn[i].results i і відповідно.
Блок 4 : Цикл 0 до 8
Блок 5 : Умова kvn[i].results>max
Блок 6 : Присвоєння змінним max i k значень kvn[j].results i j відповідно.
Блок 7 : Присвоєння temp kvn[i]; kvn[i] - kvn[k]; kvn[k] – temp;
Блок 8: Вихід.
2.2.6 Функція виводу даних на екран
Блок 1 : Вхід.
Блок 2 : Виклик функції завантаження даних з файлу, та функції сортування;
Блок 3 : Цикл 0 до n (n=4).
Блок 4 : Вивід kvn[i].name, kvn[i].results
Блок 5 : Цикл 0 до 8
Блок 6 : Вивід kvn[i].oc[j].
Блок 7 : Виклик функції меню;
Блок 8: Вихід.
2.2.7 Функція вводу поточних оцінок
Блок 1 : Вхід.
Блок 2 : Виклик функції завантаження даних з файлу;
Блок 3 : Цикл 0 до n (n=4).
Блок 4 : Присвоєння s 0.
Блок 5 : Цикл 0 до 8
Блок 6 : Ввід kvn[i].oc[j].
Блок 7 : Додавання до суми kvn[i].oc[j].
Блок 8 : Умова kvn[i].oc[j]>5&&kvn[i].oc[j]<2(істина – перехід до блоку 7)
Блок 9 : Присвоєння kvn[i].now та kvn[i].results s/8 та kvn[i].now відповідно
Блок 10 : Виклик функцій сортування, збереження даних у файл та меню.
Блок 11 : Вихід
2.2.8 Функція вводу нових даних
Блок 1 : Вхід.
Блок 2 : Цикл 0 до n (n=4).
Блок 3 : Присвоєння s 0.
Блок 4 : Ввід kvn[i].name
Блок 5 : Цикл 0 до 8
Блок 6 : Ввід kvn[i].oc[j].
Блок 7 : Додавання до суми kvn[i].oc[j].
Блок 8 : Умова kvn[i].oc[j]>5&&kvn[i].oc[j]<2(істина – перехід до блоку 6)
Блок 9 : Присвоєння kvn[i].now та kvn[i].results s/8 та kvn[i].now відповідно
Блок 10 : Виклик функцій сортування, збереження даних у файл та меню.
Блок 11 : Вихід
2.3 Таблиця ідентифікації
Таблиця 2.1 – Таблиця ідентифікації
У задачі | У програмі
Дані про команди | struct command kvn[n]
Кількість команд | n
Файли для збереження даних та результатів виконання завдання | FILE *iop
Вибраний пункт меню | q
Тимчасові змінні, змінні для роботи із циклами | i, j, s, temp, max
3 РОБОЧИЙ ПРОЕКТ
3.1 Програма та її опис
//Перед процесорні директиви
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<process.h>
#include<graphics.h>
#include<dos.h>
#define n 4 // кількість команд
/*---------------------------------------Опис структури-----------------------------------------------*/
struct command
{
char name[25];
float results,now;
int oc[8];
} kvn[n];
/*------------------------------------------Прототипи функцій-------------------------------------------*/
char menu(); // функція меню
void save(void); //функція збереження даних у файл
void load(void); //функція завантаження даних з файлу
void new_zapus(void); //функція вводу нових даних
void new_marks(void); //функція вводу поточних оцінок
void vuvid(void); //вивід результатів
void sort(void); //сортування даних
/*----------------------------------Головна функція----------------------------------*/
void main()
{
clrscr(); //очистка екрану
textbackground(1); //колір фону - синій
textcolor(YELLOW); //колір тексту - жовтий
char q;
q=menu(); //виклик функції меню
}
/*---------------------------------Функція меню-----------------------------------*/
char menu()
{
char q;
clrscr(); //очистка екрану
gotoxy(35,19); //перехід на вказане місце екрану
printf("г=========¬"); //вивід рамки
gotoxy(35,20); //перехід на вказане місце екрану
printf("¦ 1. NEW ¦"); //вивід рамки
gotoxy(35,21); //перехід на вказане місце екрану
printf("¦ 2. ADD ¦"); //вивід рамки
gotoxy(35,22); //перехід на вказане місце екрану
printf("¦ 3. PRINT¦"); //вивід рамки
gotoxy(35,23); //перехід на вказане місце екрану
printf("¦ 4. EXIT ¦");