Лабораторна робота №2.2.
1.Тема. Обробка записів (структур) даних
Постановка завдання:
скласти математичну постановку задачі, схему алгоритму та програми Сі для обробки записів (структур даних) згідно з варіантом завдання;
в програмі описати тип запису(структуру) для свого завдання (стовбець «Дані») та масив з N записів (структур) цього типу. Розробити набір тестових даних до 10 записів.
кожне завдання (варіанти завдань, стовбець «Завдання») описати як окрему підпрограму (процедуру або функцію), передавши масив записів як параметр;
вивести на екран дані з масиву в табличному вигляді (оформити як підпрограму з масивом - параметром). Границі таблиці на екрані можна задати символами ‘ * ’ або символами псевдографіки;
після виведення таблиці з вхідними даними вивести результати роботи програми;
*додати до програми -функції для збереження даних в файл та зчитування даних з файлу , Сі – звичайний текстовий – типізований файл).
Рекомендації до виконання на прикладі опису та обробки даних для списку студентів. По кожному студенту задається прізвище, номер залікової книжки та оцінка з певної дисципліни.
Для того щоб спростити собі процедуру опису змінної – запису, подати необхідні дані у вигляді таблиці:
Прізвище студента |
Номер заліков. книжки |
Оцінка |
Таблиця складається з трьох полів, тобто і запис буде мати три поля. з типом кожного поля в Сі:
Прізвище студента |
Номер залікової книжки |
Оцінка |
char[20] |
unsigned int |
unsigned short |
Найчастіше при роботі з записом описують спочатку тип запису, а потім цей тип використовують при описі змінних.
-
struct StudentType {
char pib[20];
поле для зберігання прізвища
unsigned int nomer ;
поле з номером заліковки
unsigned short ocinka
поле - оцінка
};
Тепер можна описати змінну:
struct StudentType student; |
Для того щоб змінній студент присвоїти значення, необхідно звертатися окремо до кожного поля:
student. pib:=’Іваненко П.П.’; |
student. nomer:= 345; |
student. оcinka:= 5; |
Змінна Student зберігає дані про студента Іваненко П.П., у якого номер заліковки 345, і який отримав оцінку 5.
Використання масиву записів
З використання вище описаного типу можна задати масив записів для збереження даних про студентську групу:
struct StudentType studentgroup[30]; |
Для доступу до елементів масиву використовується операція індексування та розкриття запису:
studentgroup [0] . pib := ‘Андрейченко‘; |
studentgroup [0] . nomer := 367; |
studentgroup [10] .ocinka := 5; |
Якщо проводити, введення елементів масиву, то підійде такий оператор циклу:
for (i=0; i<30; i++) |
{ |
printf(“\nВведіть прізвище студента :”); |
scanf(“%s”, &studentgroup [i].pib); |
printf(“\n Введіть номер його заліковки :”); |
scanf(“%u”, &studentgroup [i].nomer); |
printf(“\n Введіть його оцінку :”); |
scanf(“%u”, &studentgroup [i].ocinka); |
} |