- •1. Загальні відомості 7
- •1. Загальні відомості
- •1.1. Структура програми
- •1.2. Типи даних
- •2. Лабораторна робота 1. «Обчислення арифметичних виразів» (2 год.)
- •2.1. Теоретичні відомості
- •2.2.1. Приведення типів
- •2.2. Постановка задачі
- •2.3. Варіанти
- •2.4. Методичні вказівки
- •Постановка задачі.
- •3.1. Теоретичні відомості
- •3.1.1. Умовний оператор if-else
- •3.1.2. Оператор вибору switch
- •3.1.3. Оператори циклу
- •3.1.4. Приклад. Побудова геометричної фігури
- •3.2. Постановка задачі
- •3.3. Варіанти
- •3.4. Методичні вказівки
- •Постановка задачі.
- •4. Лабораторна робота 3. «Обчислення ряду. Форматне введення-виведення даних» (2 год.)
- •4.1. Теоретичні відомості
- •4.1.1. Поняття ряду. Ітераційний процес
- •4.1.2.Форматне виведення даних
- •4.1.3.Форматне введення
- •4.1.4. Приклад. Програма обчислення ряду
- •4.2. Постановка задачі
- •4.3. Варіанти
- •4.4. Методичні вказівки
- •Постановка задачі.
- •5. Лабораторна робота 4. «Функції. Ітераційні процеси» (4 год.)
- •5.1. Теоретичні відомості
- •5.1.1.Ступеневі ряди
- •5.2. Постановка задачі
- •5.3. Варіанти
- •5.4. Методичні вказівки
- •Постановка задачі.
- •6. Лабораторна робота 5. «Масиви й покажчики. Введення й виведення елементів» (2 год.)
- •6.1. Теоретичні відомості
- •6.1.1. Оголошення масиву
- •6.1.2. Масиви й покажчики
- •6.1.3. Записи «покажчик-зсув» і «покажчик-індекс»
- •6.1.4. Пошук найменшого й найбільшого елементів масиву
- •6.2. Постановка задачі
- •6.3. Варіанти
- •Постановка задачі.
- •7.1.2. Масив випадкових чисел
- •7.1.3. Видалення елемента із масиву
- •7.1.4. Вставка елемента в масив
- •7.1.5. Перестановка двох елементів
- •7.1.6. Циклічна перестановка елементів
- •7.2. Постановка задачі
- •7.3. Варіанти
- •Постановка задачі.
- •8.1.2. Передача масиву у функцію
- •8.1.3. Приклад. Функції введення й виведення елементів матриці
- •8.2. Постановка задачі
- •8.3. Варіанти
- •8.4. Методичні вказівки
- •Постановка задачі.
- •9. Лабораторна робота 8. «Сортування масивів» (4 год.)
- •9.1. Теоретичні відомості
- •9.1.1. Метод обміну (бульбашковий)
- •9.1.2. Метод прямого вибору
- •9.1.3. Метод вставок
- •9.1.4. Порівняння ефективності алгоритмів сортування
- •9.1.5. Генерація псевдовипадкових чисел
- •9.2. Постановка задачі
- •9.3. Методичні вказівки
- •Постановка задачі.
- •10. Лабораторна робота 9. «Рядки» (4 рік.)
- •10.1. Теоретичні відомості
- •10.1.1. Функції для роботи із символами
- •10.1.2. Строкові константи
- •10.1.3. Рядки як масиви
- •10.1.4. Передача рядка у функцію
- •10.1.4. Уведення/виведення символів і рядків
- •10.1.4. Функції обробки рядків
- •10.2. Постановка задачі
- •10.3. Варіанти
- •10.4. Методичні вказівки
- •Постановка задачі.
- •Література
8.4. Методичні вказівки
Всі основні операції над масивом, які виконуються відповідно варіанту завдання, реалізуються за допомогою функцій У більшості варіантів при ініціалізації масиву використовується генератор випадкових цілих чисел (див. лабораторну роботу №5).
8.5. Зміст звіту
Постановка задачі.
Варіант завдання.
Код програми.
Скріншот вікна з результатами роботи програми.
9. Лабораторна робота 8. «Сортування масивів» (4 год.)
Ціль роботи: Одержання навичок сортування даних різними методами. Порівняння ефективності різних методів сортування.
9.1. Теоретичні відомості
Процедура сортування звичайно застосовується для полегшення пошуку елементів. Вибір алгоритму сортування залежить від структури оброблюваних даних. Критеріями ефективності сортування є швидкодія й економія пам'яті, що може бути особливо істотно для великих масивів даних.
У даній лабораторній роботі розв'язується задача впорядкування масиву випадкових чисел за допомогою різних методів сортування. Як вихідний масив розглядається одновимірний масив а[i], що складається з N цілочисельних елементів, згенерованих датчиком випадкових чисел. Необхідно розташувати елементи по зростанню (організувати послідовність із неспадних елементів)..
9.1.1. Метод обміну (бульбашковий)
Цей алгоритм залежно від напрямку сортування нагадує «спливання» у процесі обчислень більш «легких» елементів або «занурення» більш «важких» елементів. Розглянемо сортування масиву розміром N, результатом якого повинна бути неспадна послідовність. Процес сортування реалізуємо шляхом «занурення» більш «важких» елементів. При проході масиву від початку до кінця (зліва направо) порівнюються пари сусідніх елементів. Якщо елемент праворуч виявляється менше елемента ліворуч, то вони переставляються. Звичайно кількість проходів не перевищує числа елементів N. Умовою закінчення проходів є відсутність перестановок при черговому проході. Наявність або відсутність перестановки при проході відзначається прапорцем, що приймає відповідно значення 1 або 0.
Запишемо функцію сортування, у списку аргументів якої: *a - покажчик на масив; num - розмір масиву; &mov - посилання на змінну, що враховує число пересилань.
void bubleSort(int *a, int num, int &mov){
int flag = 1; //Встановити прапорець перед початком проходів
for(int i = 1; i <=num; i++){ //Почати прохід масиву
flag = 0; //Черговий прохід
for (int j=0; j < num-1; j++){
if (a[j+1] < a[j]){ //Розміщення ел-тів по зростанню
swap(a[j+1], a[j]);
mov+=3;
flag = 1; //Встановити прапорець при перестановці
display(a, num); //Вивести результат перестановки }
}
if (flag == 0)break; //Якщо не було перестановок
}
}
Приклад сортування масиву методом обміну (білим кольором показані елементи, які не змінюються при ітерації, сірим кольором – елементи, що міняються місцями):
Вихідний масив |
22 |
19 |
14 |
23 |
18 |
1-я ітерація |
19 |
22 |
14 |
23 |
18 |
2-я ітерація |
19 |
14 |
22 |
23 |
18 |
3-я ітерація |
19 |
14 |
22 |
18 |
23 |
4-я ітерація |
14 |
19 |
22 |
18 |
23 |
5-я ітерація |
14 |
19 |
18 |
22 |
23 |
6-я ітерація |
14 |
18 |
19 |
22 |
23 |