
- •Міністерство освіти і науки україни
- •Лабораторнаробота№ 7. Одновимірнімасиви
- •Короткі теоретичні відомості про масиви
- •Оголошення одновимірного масиву та звернення до його елементів
- •Приклад використання одновимірного масиву
- •Масиви символів
- •Одновимірні масиви як параметри функцій
- •Функції обробки масивів чисел
- •Функція формування випадкового масиву
- •Функції виведення масиву на консоль
- •Функції введення масиву з консолі
- •Функція введення масиву як рядка символів
- •Функція введення масиву по елементам
- •Функція вилучення елементу з масиву
- •Функція перевороту масиву
- •Функція формування масиву накопичених значень
- •Функції обробки рядків символів
- •Функція копіювання частини рядка
- •Функція знаходження підрядка у рядку
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Сортування вибором
- •Приклад сортування елементів масиву у зростаючому порядку за методом вибору
- •Функція сортування масиву методом вибору
- •Сортування обміном (метод бульбашки)
- •Прикладсортування елементів масиву у зростаючому порядку за методом обміну
- •Функція сортування масиву методом обміну
- •Сортування вставкою
- •Приклад сортування елементів масиву у зростаючому порядку за методом вставки
- •Функціясортування масиву заметодом вставки
- •Сортування за ускладненими правилами
- •Обробка упорядкованих масивів
- •Пошук позиції елемента у впорядкованому масиві
- •Вставка елементу до впорядкованого масиву
- •Видалення елементу з упорядкованого масиву
- •Злиття двох впорядкованих масивів
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення та ініціалізація матриць
- •Матриці як параметри функцій
- •Формування та виведення матриць з використанням консолі
- •Тотальна обробка даних у матрицях
- •Вибіркова обробка матриць
- •Перестановки елементів матриці
- •Видалення та вставка елементів матриці
- •Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення шаблону та ініціалізація структур
- •Масивиструктур
- •Введення-виведення структур
- •Сортування масивів структур
- •Створення проекту «Результати атестації»
- •Інтерфейс користувача для проекту
- •Визначення глобальних типів даних програми
- •Функція обробки номеру вибраного варіанту
- •Функція відображення масиву на консолі
- •Додавання нових даних до масиву структур
- •Функція сортування масиву за групою та прізвищем
- •Сортування за кількістю незадовільних оцінок та середньому балу
- •Вибірка студентів, що мають середній бал вище 4
- •Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
Інтерфейс користувача для проекту
Можливий варіант інтерфейсу користувача представлено на рисунку 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>.
Визначення глобальних типів даних програми
Для реалізації проекту потрібно оголосити шаблон для структури, масив для зберігання інформації про студентів, розміри полів для прізвища, назви групи, розмір масиву. Можна також ініціалізувати декілька елементів масиву і оголосити змінну, яка буде зберігати реальну кількість елементів у масиві.
Ці оголошення повинні бути доступні усім функціям програми, тому їх слід зробити поза цими функціями, на початку програми.
Тексти цих оголошень і ініціалізація масиву наведені нижче:
#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;
Функція обробки номеру вибраного варіанту
Із фрагменту функції main(), наведеного у пункті 10.2.1, видно, що для обробки номеру вибраного варіанту використовується функція operate_chois().. Номер вибраного варіанту у цій функції опрацьовується за допомогою оператора swith. Текст цієї функції ми тут не наводимо, бо вона подібно до функцій обробки номеру варіанта з інших лабораторних робіт.
Функція відображення масиву на консолі
Алгоритм функції полягає в циклічному виведенні полів кожного з елементів масиву структур. Для форматування виводу використовуються функції 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; } }
Додавання нових даних до масиву структур
Додати нового студенту у масив структур дуже просто. Для цього достатньо ввести з консолі значення кожного поля наступного елементу масиву і збільшити лічильник елементів масиву на 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>