
- •Методичні вказівки
- •5.05010301 – Розробка програмного забезпечення
- •2.1 Основні форми представлення алгоритмів:
- •2.2 Блок-схеми
- •2.3 Основні структури алгоритмів
- •Лінійний алгоритм
- •3. Постановка задачі
- •4. Варіанти
- •5. Методичні вказівки
- •3. Постановка задачі
- •4. Варіанти
- •5. Методичні вказівки
- •Цикли з відомим числом повторень
- •Цикли з невідомим числом повторень
- •Вкладені цикли
- •3. Постановка задачі
- •4. Варіанти
- •5. Методичні вказівки
- •5. Методичні вказівки
- •Приклад
- •5. Методичні вказівки
- •2. Введення даних організувати з клавіатури.
- •3. Висновок результатів для завдання організувати на монітор.
- •Практична робота № 6
- •3. Постановка завдання
- •4. Варіанти
- •5. Методичні вказівки
- •2. Введення даних для завдань а і б організувати з клавіатури.
- •4. Висновок результатів для завдання а організувати у вигляді:
- •7. Контрольні питання
- •Практична робота № 7
- •3. Постановка завдання.
- •5. Методичні вказівки
- •2.3 Цикл типу do — while
- •2.4 Керуючі оператори в циклах
- •3. Постановка завдання.
- •5. Методичні вказівки
- •7. Контрольні питання
- •2.5 Області дії змінних
- •Приклад
- •3. Постановка завдання
- •4. Варіанти
- •5. Методичні вказівки
- •7. Контрольні запитання
- •2.5. Поиск в отсортированном массиве
- •3. Постановка завдання
- •5. Методичні вказівки
- •7. Контрольні питання
- •3. Постановка завдання
- •4. Варіанти завдань
- •5. Методичні вказівки
- •5. Методичні вказівки
- •7. Контрольні питання
- •Практична робота № 13
- •1. Мета роботи:
- •2. Теоретичні відомості
- •3. Постановка завдання
- •1. Використовуючи функції сформувати за допомогою дсч одновимірний масив і вивести його на друк.
- •2. Виконати обробку одновимірного масиву у відповідності з варіантом, використовуючи функції, результат вивести на друк.
- •4. Варіанти
- •5. Методичні вказівки
- •7. Контрольні питання
- •2.3 Швидке сортування
- •Алгоритм
- •Швидкість
- •2.4 Модифіковані методи сортування
- •2.4.1 Метод Шелла
- •2.4.2 Швидке сортування
- •3. Постановна задачі
- •4. Варіанти
- •5. Методичні вказівки
- •Приклад
- •3. Постановка завдання
- •1. Ввести з клавіатури рядок символів і обробити її у відповідності зі своїм варіантом, використовуючи функції.
- •4. Варіанти
- •5. Методичні вказівки
- •7. Контрольні питання
- •5. Методичні вказівки
- •7. Контрольні питання
- •Практична робота № 17
- •1. Мета роботи:
- •2. Теоретичні відомості
- •2.5. Численные методы решения уравнений
- •2.5.1. Метод итераций
- •2.5.2. Метод Ньютона
- •2.5.3. Метод половинного деления
- •3. Постановка завдання
- •1. Написати функцію з замовчує параметрами відповідно до варіанта, продемонструвати різні способи виклику функції: • з параметрами заданими явно, • з опущеними параметрами
- •4. Варіанти
- •5. Методичні вказівки
- •3. Постановка задачі
- •На цьому дереві можна визначити три методи упорядкування:
- •5. Методичні вказівки
- •7. Контрольні питання
- •Практична робота № 20
- •1. Мета роботи:
- •2. Короткі теоретичні відомості
- •3. Постановка завдання
- •4. Варіанти
- •5. Методичні вказівки
- •7. Контрольні питання
5. Методичні вказівки
1. Формування, друк і обробку двовимірних масивів.
2. Реалізувати масиви як псевдодінамічні.
3. Формування масивів виконати з використанням ДСЧ. В масиви записувати і позитивні, і негативні числа.
6. Зміст звіту
1. Постановка завдання (загальна і для конкретного варіанту).
2. Визначення функцій, використовуваних для формування, друку та обробки масивів (для кожного завдання).
3. Визначення функції main ().
4. Результати тестів.
7. Контрольні запитання
1. Що таке масив? Дайте визначення.
2. В чому переваги представлення інформації у вигляді масиву?
3. Яким чином визначається довжина масиву при його ініціалізації?
Практична робота № 12
Тема: Створення та обробка динамічних масивів за допомогою покажчиків
1. Мета роботи:
1. Отримати практичні навички виділення, перерозподілу і звільнення пам'яті при роботі з динамічними масивами
2. Теоретичні відомості
Для роботи з динамічною пам'яттю використовують покажчики. З їх допомогою здійснюється доступ до ділянок динамічної пам'яті, які називаються динамічними змінними. Динамічні змінні створюються за допомогою спеціальних функцій і операцій. Вони існують або до кінця роботи програм, або до тих пір, поки не будуть знищені за допомогою спеціальних функцій або операцій.
Для створення динамічних змінних використовують операцію new, визначену в C + +:
покажчик = new імя_тіпа [ініціалізатор];
де ініціалізатор - вираз в круглих дужках.
Операція new дозволяє виділити і зробити доступним ділянку динамічної пам'яті, який відповідає заданому типу даних. Якщо задано ініціалізатор, то в цю ділянку буде занесено значення, вказане в Ініціалізатор.
int * x = new int (5);
Для видалення динамічних змінних використовується операція delete, визначена в C + +:
delete покажчик;
де покажчик містить адресу ділянки пам'яті, раніше виділений за допомогою операції new.
delete x;
Операція new при використанні з масивами має наступний формат:
new тіп_массіва
Така операція виділяє для розміщення масиву ділянку динамічної пам'яті відповідного розміру, але не дозволяє ініціалізувати елементи масиву. Операція new повертає покажчик, значенням якого служить адресу першого елемента масиву. При виділенні динамічної пам'яті розміри масиву повинні бути повністю визначені.
/ / Виділення динамічної пам'яті 100 * sizeof (int) байт
int * a = new int [100];
При формування матриці спочатку виділяється пам'ять для масиву покажчиків на одномірні масиви, а потім в циклі з параметром виділяється пам'ять під n одновимірних масивів.
/ * Виділення динамічної пам'яті під двовимірний динамічний масив * /
int ** form_matr (int n, int m)
{
int ** matr = new int * [n] ;/ / виділення пам'яті по масив покажчиків
for (int i = 0; i <n; i + +)
/ / Виділення пам'яті 100 * sizeof (int) байт для масиву значень
matr [i] = new int [m];
return matr ;/ / повертаємо вказівник на масив покажчиків
*matr[0] |
*matr[1] |
*matr[2] |
….. |
*matr[n] |
Рисунок – Виділення пам'яті під двовимірний масив
Змінювати значення покажчика на динамічний масив треба акуратно, тому що цей покажчик потім використовується при звільненні пам'яті за допомогою операції delete.
/ * Звільняє пам'ять, виділену під масив, якщо а адресує його початок */
delete [] a;
Видалення з динамічної пам'яті двовимірного масиву здійснюється в порядку зворотному його створення, тобто спочатку звільняється пам'ять, виділена під одномірні масиви з даними, а потім пам'ять, виділена під одновимірний масив покажчиків.
int find (int ** matr, int m, int I)
{
for (int i = 0; i <m; i + +)
if (matr [I] [i] <0) return 1;
return 0;
}
При видаленні з динамічної матриці рядків або стовпців створюється нова матриця потрібного розміру, в яку переписуються дані зі старої матриці. Потім стара матриця видаляється.
int ** del (int ** matr, int & n, int m)
{/ / Видалення парних рядків
int k = 0, t = 0;
for (int i = 0; i <n; i + +)
if (i% 2! = 0) k + + ;/ / кількість непарних рядків
/ / Виділяємо пам'ять під нову матрицю
int ** matr2 = form_matr (k, m);
for (i = 0; i <n; i + +)
if (i% 2! = 0)
{
/ / Якщо рядок непарна, то переписуємо її в нову матрицю
for (int j = 0; j <m; j + +)
matr2 [t] [j] = matr [i] [j];
t + +;
}
n = t ;/ / змінюємо кількість рядків
/ / Повертаємо покажчик на нову матрицю як результат функції
return matr2;
}
3. Постановка завдання
1. Сформувати динамічний одновимірний масив, заповнити його випадковими числами і вивести на друк.
2. Виконати вказану у варіанті завдання і вивести отриманий масив на друк.
3. Сформувати динамічний двовимірний масив, заповнити його випадковими числами і вивести на друк.
4. Виконати вказану у варіанті завдання і вивести отриманий масив на друк.
4. Варіанти
Завдання 12.1 та 12.2
Таблиця 16 – Варіанти завдання 12.1 та 12.2
№ варіанту |
одновимірний масив |
двовимірний масив |
1 |
Видалити перший парний елемент |
Додати рядок із заданим номером |
2 |
Видалити перший негативний елемент |
Додати стовпець із заданим номером |
3 |
Видалити перший негативний елемент |
Додати рядок в кінець матриці |
4 |
Видалити елемент рівний середньому арифметичному елементів масиву |
Додати стовпець в кінець матриці |
5 |
Видалити елемент із заданим номером |
Додати рядок в початок матриці |
6 |
Видалити N елементів, починаючи з номера K |
Додати стовпець в початок матриці |
7 |
Видалити всі парні елементи |
Додати К рядків у кінець матриці |
8 |
Видалити всі елементи з парними індексами |
Додати К стовпців в кінець матриці |
9 |
Видалити всі непарні елементи |
Додати К рядків в початок матриці |
10 |
Видалити всі елементи з непарними індексами |
Додати К стовпців в початок матриці |
11 |
Додати елемент в початок масиву |
Видалити рядок з номером К |
12 |
Додати елемент в кінець масиву |
Видалити стовпець з номером К |
13 |
Додати К елементів в початок масиву |
Видалити рядки, починаючи з рядка К1 і до рядка К2 |
14 |
Додати К елементів в кінець масиву |
Видалити стовпці, починаючи зі стовпця К1 і до стовпця К2 |
15 |
Додати К елементів, починаючи з номера N |
Видалити всі парні рядки |
16 |
Додати після кожного негативного елемента його модуль |
Видалити всі парні стовпці |
17 |
Додати після кожного парного елемента елемент зі значенням 0 |
Видалити всі рядки, в яких є хоча б один нульовий елемент |
18 |
Додати по К елементів в початок і в кінець масиву |
Видалити всі стовпці, в яких є хоча б один нульовий елемент |
19 |
Додати елемент з номером К |
Видалити рядок, в якій знаходиться найбільший елемент матриці |
20 |
Видалити елемент із заданим номером |
Додати рядки після кожної парної рядка матриці |
21 |
Видалити N елементів, починаючи з номера K |
Додати стовпці після кожного парного стовпця матриці |
22 |
Видалити всі парні елементи |
Додати До рядків, починаючи з рядка з номером N |
23 |
Видалити всі елементи з парними індексами |
Додати До стовпців, починаючи зі стовпця з номером N |
24 |
Видалити всі непарні елементи |
Додати рядок після рядка, що містить найбільший елемент |
25 |
Видалити всі елементи з непарними індексами |
Додати стовпець після стовпця, що містить найбільший елемент |