- •Міністерство освіти і науки україни
- •Лабораторнаробота№ 7. Одновимірнімасиви
- •Короткі теоретичні відомості про масиви
- •Оголошення одновимірного масиву та звернення до його елементів
- •Приклад використання одновимірного масиву
- •Масиви символів
- •Одновимірні масиви як параметри функцій
- •Функції обробки масивів чисел
- •Функція формування випадкового масиву
- •Функції виведення масиву на консоль
- •Функції введення масиву з консолі
- •Функція введення масиву як рядка символів
- •Функція введення масиву по елементам
- •Функція вилучення елементу з масиву
- •Функція перевороту масиву
- •Функція формування масиву накопичених значень
- •Функції обробки рядків символів
- •Функція копіювання частини рядка
- •Функція знаходження підрядка у рядку
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Сортування вибором
- •Приклад сортування елементів масиву у зростаючому порядку за методом вибору
- •Функція сортування масиву методом вибору
- •Сортування обміном (метод бульбашки)
- •Прикладсортування елементів масиву у зростаючому порядку за методом обміну
- •Функція сортування масиву методом обміну
- •Сортування вставкою
- •Приклад сортування елементів масиву у зростаючому порядку за методом вставки
- •Функціясортування масиву заметодом вставки
- •Сортування за ускладненими правилами
- •Обробка упорядкованих масивів
- •Пошук позиції елемента у впорядкованому масиві
- •Вставка елементу до впорядкованого масиву
- •Видалення елементу з упорядкованого масиву
- •Злиття двох впорядкованих масивів
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення та ініціалізація матриць
- •Матриці як параметри функцій
- •Формування та виведення матриць з використанням консолі
- •Тотальна обробка даних у матрицях
- •Вибіркова обробка матриць
- •Перестановки елементів матриці
- •Видалення та вставка елементів матриці
- •Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Оголошення шаблону та ініціалізація структур
- •Масивиструктур
- •Введення-виведення структур
- •Сортування масивів структур
- •Створення проекту «Результати атестації»
- •Інтерфейс користувача для проекту
- •Визначення глобальних типів даних програми
- •Функція обробки номеру вибраного варіанту
- •Функція відображення масиву на консолі
- •Додавання нових даних до масиву структур
- •Функція сортування масиву за групою та прізвищем
- •Сортування за кількістю незадовільних оцінок та середньому балу
- •Вибірка студентів, що мають середній бал вище 4
- •Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
Функції обробки масивів чисел
Під час роботи з масивами чисел доводиться виконувати ряд специфічних операцій, пов'язаних саме з цією структурою даних числового типу. Найбільш поширеними з них є:
введення масиву чисел;
виведення масиву чисел;
формування масиву випадкових чисел;
пошук суми елементів масиву;
пошук максимального та мінімального елементів масиву та їх індексів;
пошук індексу елементу масиву за його значенням;
циклічний зсув елементів масиву праворуч або ліворуч;
видалення елементу з масиву;
формування масиву накопичених значень елементів.
Нижче ми розглянемо деякі з таких функцій на прикладах обробки цілочислових масивів.
Незважаючи на відмінність завдань, що вирішуються цими функціями, у них буде дві однакові особливості.
Перша полягає в тому, що в кожну з цих функцій буде передаватися ім'я масиву і функція буде обробляти саме цей масив, а не його копію.
Друга особливість полягає у тому, що окрім масиву до функції слід передавати кількість даних у масиві, бо оголошений розмір масиву зазвичай перевищує кількість даних у ньому.
Функція формування випадкового масиву
Ця функція дещо відрізняється від функції генерації послідовності випадкових чисел, що була розглянута раніше. Різниця полягає у тому, що сформовані числа записуються у елементи масиву. Текст функції наведено на рисунку 7.4.
Рисунок 7.4 – Функція формування випадкового масиву
Функції виведення масиву на консоль
Ця функція досить проста і не потребує коментарів. Ця функція досить проста і не потребує коментарів. Текст функції наведено на рисунку 7.5.
Рисунок 7.5 – Функція виведення масиву на консоль
Функції введення масиву з консолі
Можливі декілька варіантів введення масиву з консолі. Перший полягає у тому, що користувач одразу набирає числа масиву, розділяючи їх пробілами, тобто масив чисел являє собою рядок символів. Цей рядок вводиться за допомогою функції gets(),а далі перетворюється у послідовність чисел. Перевага цього способу полягає у простоті вводу, а недолік у тому, що доводиться перетворювати символьний рядок у масив чисел.
Другий варіант полягає у послідовному введенні розміру та кожного елементу масиву з консолі як чисел за допомогою об’єкту cin. Тут вже не потрібно турбуватиcя про перетворення символів у числа, але сама процедура введення ускладнена.
Нижче ми розглянемо обидва варіанти.
Функція введення масиву як рядка символів
Сама функція, що наведена нижче, виглядає досить просто і фактично забезпечує тільки введення рядка символів, а для перетворення рядка символів у масив використовується функція strToArr().
Рисунок 7.6 – Функція введення масиву як рядка символів
Функцію перетворення рядка символів у масив наведено на рисунку 7.7.
Рисунок 7.7 – Функція перетворення рядка символів у масив
У цій функції довжину рядка визначено розміром 80 виходячи з ширини консолі. Для введення рядка використовується функція gets() а не об’єкт cin,тому що цей об’єкт буде сприймати пробіл, як кінець рядка. Використання функції gets() потребує підключення заголовного файлу <cstdio> або < stdio.h>.
Роботу по перетворенню рядка символів у масив виконує функція strToArr():
У цій функції для перевірки, чи є символ цифрою, використовується функція isdigit(), що визначена у заголовному файлі <cctype> або <ctype.h>.
Для перетворення символу цифри у число використовується тай факт, що код цифри на 48 більший ніж значення цієї цифри.
Значення усього числа накопичується за схемою Горнера, відповідно до якої, наприклад, число 12345 обчислюється так: (((1*10+2)*10+3)*10+4)*10+5 .