- •Обчислювальна техніка та алгоритмічні мови Методичні вказівки до лабораторних робіт
- •Загальні відомості
- •Структура програми
- •Типи даних
- •Умовний оператор if-else
- •Оператор вибору switch
- •Оператори циклу
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота 3. «Функції. Форматне введення-виведення даних»(2 год.)
- •Теоретичні відомості
- •Алгоритм обчислення ряду
- •Постановка задачі
- •Ступеневі ряди
- •Форматне виведення даних в с
- •Форматне введення в с
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота 4.«Одновимірні масиви.Покажчики. Рядки»(4 год.)
- •Теоретичні відомості Масиви й покажчики
- •Записи «покажчик-зсув» і «покажчик-індекс»
- •Рядки як одновимірні масиви
- •Передача рядка у функцію
- •Введення/виведення символів і рядків
- •Бібліотечні функції для роботи з символами та рядками
- •Постановка задачі
- •Варіанти
- •Передача масиву у функцію
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота6. «Динамічні одновимірні масиви»(2 год.)
- •Теоретичні відомості Динамічні масиви
- •Видалення елемента із масиву
- •Вставка елемента в масив
- •Перестановка двох елементів
- •Циклічна перестановка елементів
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Лабораторна робота7. "Структури: складені типи даних"(2 год.)
- •Теоретичні відомості
- •Постановка задачі
- •Варіанти
- •Методичні вказівки
- •Література
Методичні вказівки
Всі основні операції над масивом, які виконуються відповідно варіанту завдання, реалізуються за допомогою функцій У більшості варіантів приініціалізації масиву використовується генератор випадкових цілих чисел (див. лабораторну роботу №5).
Зміст звіту
Звіт з виконаної роботи включає наступні розділи:титульний лист, постановка задачі, варіант завдання, текст програми, скріншот з результатами роботи програми, висновки.
Лабораторна робота6. «Динамічні одновимірні масиви»(2 год.)
Ціль роботи: Формуванняуміння створювати й видаляти динамічні масиви, ініціалізувати масив випадковими числами. Освоєння прийомів вставки й видалення елементів із масиву, перестановок елементів і ін.
Теоретичні відомості Динамічні масиви
Якщо до початку роботи програми число елементів у масиві невідоме або це число змінюється в процесі обчислень, варто використати динамічні масиви. Пам'ять під такі масиви виділяється в ході виконання програми за допомогою операції new. Адреса початку масиву зберігається у змінній - покажчику, наприклад,
int n=20;
float *a = new float[n];
Обнулювання пам'яті при її виділенні не відбувається. Ініціалізувати динамічний масив не можна. Звертання до елемента динамічного масиву здійснюється так само, як і звертання до елемента звичайного, наприклад, a[5] або *(a+5).
Якщо динамічний масив для роботи програми більше не потрібний, можна звільнити пам'ять, що він займав. Це виконується інструкцією:
delete [] a;
Квадратні дужки для видалення масиву обов'язкові, розмір масиву не вказується.
Видалення елемента із масиву
Щоб видалити k-й елемент із масиву arr, що має розмір num, необхідно зробити наступне
– залишити без зміни перші (k-1) елементів;
– зсувати всі елементи, починаючи з k-го, на один елемент уліво;
– зменшити кількість елементів масиву num на одиницю.
Ці операції реалізуються за допомогою інструкцій:
for(int i=k; i<num-1; i++)
*(arr+i)=*(arr+i+1);
num--;
Вставка елемента в масив
Нехай є динамічний масив 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; //Видалення колишнього масиву
Перестановка двох елементів
Перестановка елементів k і m цілочисельного масиву здійснюється за допомогою робочої змінної int work:
work=arr[k];
arr[k]=arr[m];
arr[m]=work;
Циклічна перестановка елементів
Циклічну перестановку елементів масиву можна відбразити, як одночасне переміщення всіх елементів по масиву, замкнутому у кільце. Циклічну перестановку вліво можна виконати в такий спосіб:
– скопіювати 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++;
}
