- •Міністерство освіти і науки україни
- •«Програмування»
- •Чернігів чдту 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.23Інтерфейс користувача для проекту
Можливий варіант інтерфейсу користувача представлено на рисунку 10.2.
Рисунок 10.2 – Інтерфейс користувача проекту
Формування інтерфейсу користувача можна доручити головній функції програми, функції main(). Виведення варіантів роботи програми і введення номеру вибраного варіанту доцільно реалізувати у безкінечному циклі з очисткою екрану перед виведенням варіантів.
Нижче наведено фрагмент цієї функції:
SetConsoleTitleA("Проект \"Результати атестації\"");
int v;
while (true) {
system("cls");
cout<<" Варiанти роботи програми:\n\n";
cout<<" 1. Показати масив структур\n";
. . .
cout<<"\n Виберiть варiант -> ";
cin>>v;
operate_chois(v);
};
Нагадаємо, що для того, щоб отримати доступ до функції system(), потрібно підключити заголовний файл <windows.h>.
11.1.24Визначення глобальних типів даних програми
Для реалізації проекту потрібно оголосити шаблон для структури, масив для зберігання інформації про студентів, розміри полів для прізвища, назви групи, розмір масиву. Можна також ініціалізувати декілька елементів масиву і оголосити змінну, яка буде зберігати реальну кількість елементів у масиві.
Ці оголошення повинні бути доступні усім функціям програми, тому їх слід зробити поза цими функціями, на початку програми.
Тексти цих оголошень і ініціалізація масиву наведені нижче:
#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;
11.1.25Функція обробки номеру вибраного варіанту
Із фрагменту функції main(), що наведений у пункті 10.2.1, видно,що для обробки номеру вибраного варіанту використовується функція operate_chois().. Номер вибраного варіанту у цій функції опрацьовується за допомогою оператора swith. Текст цієї функції ми тут не наводимо, бо вона подібно до функцій обробки номеру варіанта з інших лабораторних робіт.
11.1.26Функція відображення масиву на консолі
Алгоритм функції полягає в циклічному виведенні полів кожного з елементів масиву структур. Для форматування виводу використовуються функції setw(), setprecision(). Зауважимо, що використання цих функцій можливо при умові включення заголовного файлу <iomanip>.
Нижче наводиться код цієї функції
void showAr(){
for(int i=0;i<size;i++){
cout<<setw(16)<<ar[i].fio <<setw(8)<<ar[i].gr <<setw(3)<<ar[i].neud <<setw(6)<<setprecision(3)<<ar[i].srBall<<endl; } }
11.1.27Додавання нових даних до масиву структур строки в таблицу
Додати нового студенту у масив структур дуже просто. Для цього достатньо ввести з консолі значення кожного поля наступного елементу масиву і збільшити лічильник елементів масиву на 1.
Код відповідної функції наведено нижче:
void addStud(){
cout<<"Введiть прiзвище: ";
gets(ar[size].fio); //Пропускаємо попередній символ кінця рядка
gets(ar[size].fio);
cout<<"Введiть групу: ";
cin>>ar[size].gr;
cout<<"Введiть середнiй бал i кiлькiсть заборгованостей: ";
cin>>ar[size].srBall>>ar[size].neud;
size++;
cout<<endl;
cout<<"Таким став масив:\n";
showAr();
};
У наведеній функції для введення прізвища з ініціалами, де є пробіли, використовується функція gets(). Але для цього необхідно підключити заголовний файл <cstdio> або <stdio.h>
