- •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. Методичні вказівки
- •Постановка задачі.
- •Література
Постановка задачі.
Варіант завдання.
Код програми.
Скріншот вікна з результатами обчислень.
7. Лабораторна робота 6. «Динамічні одновимірні масиви» (4 год.)
Ціль роботи: Навчитися створювати й видаляти динамічні масиви, ініціалізувати масив випадковими числами. Одержати навички вставки й видалення елементів із масиву, прийоми парних і циклічних перестановок елементів і ін.
7.1. Теоретичні відомості
7.1.1. Динамічні масиви
Якщо до початку роботи програми число елементів у масиві невідоме або це число змінюється в процесі обчислень, варто використати динамічні масиви. Пам'ять під такі масиви виділяється в ході виконання програми за допомогою операції new. Адреса початку масиву зберігається у змінній - покажчику, наприклад,
int n=20;
float *a = new float[n];
Обнулювання пам'яті при її виділенні не відбувається. Ініціалізувати динамічний масив не можна. Звертання до елемента динамічного масиву здійснюється так само, як і звертання до елемента звичайного, наприклад, a[5] або *(a+5).
Якщо динамічний масив для роботи програми більше не потрібний, можна звільнити пам'ять, що він займав. Це виконується інструкцією:
delete [] a;
Квадратні дужки для видалення масиву обов'язкові, розмір масиву не вказується.
7.1.2. Масив випадкових чисел
Присвоювання елементам масиву випадкових цілих чисел виконується функцією rand. Ця функція доступна із заголовного файлу stdlib.h. Вираз
rand()%rmax
повертає у точку виклику випадкове число з діапазону від 0 до rmax-1. Створення динамічного масиву з випадкових чисел від 0 до 9, що має розмір num, виконується в такий спосіб:
int *arr=new int[num];
for(i=0;i<num;i++)
*(arr+i)=rand()%10;
7.1.3. Видалення елемента із масиву
Щоб видалити k-й елемент із масиву arr, що має розмір num, необхідно зробити наступне
– залишити без зміни перші (k-1) елементів;
– зсувати всі елементи, починаючи з k-го, на один елемент уліво;
– зменшити кількість елементів масиву num на одиницю.
Ці операції реалізуються за допомогою інструкцій:
for(int i=k; i<num-1; i++)
*(arr+i) = *(arr+i+1);
num--;
7.1.4. Вставка елемента в масив
Нехай є динамічний масив arr розміром num, і нехай k - номер елемента, після якого в масив потрібно вставити елемент хins. Для вставки необхідно виконати наступне:
– створити новий масив arr1 на одиницю більшого розміру, ніж вихідний;
– скопіювати в arr1 без зміни перші k елементів;
– скопіювати в arr1 елементи, починаючи з (k+1)-го (зсув на один елемент),
– на місце (k+1)-го елемента записати значення хins;
– видалити з пам'яті вихідний масив arr.
Відповідний код може мати вигляд:
int *arr1 = new int[++num]; //Створення нового масиву
for(i=0; i<=k; i++)
*(arr1+i) = *(arr+i);
*(arr1+k+1) = xins;
for(i=k+1; i<num; i++)
*(arr1+i+1) = *(arr+i);
delete [] arr; //Видалення колишнього масиву
7.1.5. Перестановка двох елементів
Перестановка елементів k і m цілочисельного масиву здійснюється за допомогою робочої змінної int work:
work=arr[k];
arr[k]=arr[m];
arr[m]=work;
7.1.6. Циклічна перестановка елементів
Циклічну перестановку елементів масиву можна відбразити, як одночасне переміщення всіх елементів по масиву, замкнутому у кільце. Циклічну перестановку вліво можна виконати в такий спосіб:
– скопіювати 1-й елемент масиву в робочу змінну;
– зсунути інші елементи з 2-го до N-го на одну позицію вліво;
– скопіювати елемент із робочої змінної в останню звільнену позицію.
Відповідний код буде мати вигляд:
work=*arr;
for(i=0; i<num-1; i++)
*(arr+i) = *(arr+i+1);
*(arr+num-1) = work;
Якщо необхідно виконати циклічну перестановку на k елементів, то організується ще один (зовнішній) цикл:
int k=5, circle=0;
while(circle<k){
work = *arr;
for(i=0; i<num-1; i++)
*(arr+i) = *(arr+i+1);
*(arr+num-1) = work;
circle++;
}