
- •Міністерство освіти і науки україни
- •«Програмування»
- •Чернігів чдту 2013
- •Лабораторна робота № 11. Основи роботи з покажчиками
- •Короткі теоретичні відомості
- •11.1.1Оголошення та ініціалізація покажчиків
- •11.1.2Звернення до даних через покажчики
- •11.1.3Використання кваліфікатора const для покажчиків
- •11.1.4Адресна арифметика
- •11.1.5Нетипізовані вказівники
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 12. Використання покажчиків для обробки масивів
- •Короткі теоретичні відомості
- •11.1.6Приклад формування одновимірного масиву з використанням покажчиків
- •11.1.7Робота з масивами символів через покажчики
- •11.1.8Стандартні функції для роботи з рядками символів
- •11.1.9Масиви покажчиків на рядки символів
- •11.1.10Покажчики на структури Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 13. Використання покажчиків на функції
- •Короткі теоретичні відомості
- •11.1.11Оголошення та ініціалізація матриць
- •11.1.12Матриці як параметри функцій
- •11.1.13Формування та виведення матриць з використанням консолі
- •11.1.14Тотальна обробка даних у матрицях
- •11.1.15Вибіркова обробка матриць
- •11.1.16Перестановки елементів матриці
- •11.1.17Видалення та вставка елементів матриці
- •11.1.18Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 14. Робота з файлами
- •Короткі теоретичні відомості
- •11.1.19Оголошення шаблону та ініціалізація структур
- •11.1.20Массиви структур
- •11.1.21Введення-виведення структур
- •11.1.22Сортування масивів структур
- •Створення проекту «Результати атестації»
- •11.1.23Інтерфейс користувача для проекту
- •11.1.24Визначення глобальних типів даних програми
- •11.1.25Функція обробки номеру вибраного варіанту
- •11.1.26Функція відображення масиву на консолі
- •11.1.27Додавання нових даних до масиву структур строки в таблицу
- •11.1.28Функція сортування масиву за групою та прізвищем
- •11.1.29Сортування за кількість незадовільних оцінок та середньому балу
- •11.1.30Вибірка студенті, що мають середній бал вище 4
- •11.1.31Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
11.1.20Массиви структур
Із структур однакового тегу може бути створений масив, точно так само як з даних інших типів. Наприклад, якщо ми хочемо мати результати атестації для всіх студентів, можна створити масив, що містить дані про кожного студента у вигляді структури і частково його проініціалізувати:
#define FIO_SIZE 15
#define GR_SIZE 7
#define AR_SIZE 30
struct stud {char fio[FIO_SIZE];
char gr[GR_SIZE];
float srBall;
int neud;
};
stud ar[AR_SIZE]={
{"Чуб П.П.","КС051", 4.55, 0},
{"Гай А.Л.","КС052", 1.55, 3},
{"Кит А.В.","КС051", 2.45, 1},
{"Кiт С.В.","КС052", 1.25, 3},
{"Бут К.Л.","КС052", 4.65, 0}
};
int size=5;
При зверненні до елементу масиву структур також використовуються індекси та квадратні дужки. При цьому слід враховувати, що елементом масиву є структура і, тому, квадратні дужки ставляться після імені масиву, а потім, через крапку, записується ім'я поля.
Наприклад, вище наведений масив можна доповнити ще однією структурою.
ar[size].fio =’Петренко А,П,’;
ar[size].gr = ‘КС041’;
ar[size].srBall = ‘3.2’;
ar[size].neud = 1;
Якщо полем структури є масив, то у зверненні до елементу масиву квадратні дужки вже будуть після імені поля. Так, наприклад, якщо ми хочемо у вищенаведеному масиві структур змінити прізвище студента «Гай» на «Гак», то слід написати так:
ar[1].fio[2] = 'к';
11.1.21Введення-виведення структур
При організації вводу-виводу варто мати на увазі, що безпосередньо структуру ввести або вивести, без використання спеціально написаних процедур, не можна. Можна вводити або виводити окремі поля структури, або елементи полів, якщо поля є теж структурами.
Введення і виведення структур схоже на введення та виведення матриць, але різниця тут у тому, що стовпчики можуть мати різні типи, і доступ до елементів різних стовпців проводиться не за індексом, а за назвою.
11.1.22Сортування масивів структур
Сортування масиву структур проводиться так само, як і сортування масиву чисел, тобто структури порівнюються і, якщо необхідно, переставляються. Єдина проблема тут полягає в тому, що способів порівняння записів, а, отже, і варіантів сортування, може бути багато, і кожен з них може знадобитися. Так для масиву, розглянутого в попередньому прикладі, записи можна сортувати за прізвищем студента або за середнім балом, за кількістю незадовільних оцінок і т.д. Більш того, можливі і складніші випадки сортування, наприклад, по групі, а в межах однієї групи на прізвище студента. У такій ситуації доводиться для кожного варіанту сортування писати функції сортування, які будуть відрізнятися тільки способом порівняння структур.
Створення проекту «Результати атестації»
У цьому проекті ми будемо працювати з масивом, що містить результати атестації студентів. Кожен елемент масиву буде зберігати запис, полями якої будуть прізвище студента з ініціалами, найменування групи, в якій навчається студент, середній бал і кількість незадовільних оцінок у студента.
Потрібно забезпечити введення потрібної кількості даних до масиву структур, сортування масиву за різними правилами та виведення результатів обробки масиву.
У проекті буде реалізовано такі процедури обробки даних.
комплексне сортування по групі + прізвище студента.
комплексне сортування за кількістю незадовільних оцінок ↓ + та середньому балу ↑.
вибірка студентів, які мають середній бал вище заданого.
підрахунок загального числа студентів, що мають більш 2-х незадовільних оцінок.
Даний проект може слугувати прикладом того, як виконати завдання для самостійної роботи.