Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_OTAM_sem1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
949 Кб
Скачать
☆

Методичні вказівки

Всі основні операції над масивом, які виконуються відповідно варіанту завдання, реалізуються за допомогою функцій У більшості варіантів приініціалізації масиву використовується генератор випадкових цілих чисел (див. лабораторну роботу №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++;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]