Формирование динамических массивов с использованием операций new и delete

Для динамического распределения памяти используются операции new и delete. Операция

new имя_типа

или

new имя_типа инициализатор

позволяет выделить и сделать доступны свободный участок памяти, размеры которого соответствуют типу данных, определяемому именем типа. В выделенный участок заносится значение определяемое инициализатором, который не является обязательным параметром. В случае успешного выделения памяти операция возвращает адрес начала выделенного участка памяти, если участок не может быть выделен, то возвращается NULL.

Примеры:

1) int *i;

i=new int(10);

2) float *f;

f=new float;

3) int *mas=new[5];

В примерах 1, 2 показано как выделить память под скалярные переменные, пример 3 показывает выделение памяти под массив переменных.

Операция delete указатель освобождает участок памяти ранее выделенный операцией new.

Пример:

Функция для формирования двумерного динамического массива

int ** make_matr(int n)

{

int **matr;

int i,j;

matr=new int*[n];

for (i=0;i<n;i++)

{

matr[i]=new int[n];

for (j=0;j<n;j++)

matr[i][j]=random(10);

}

return matr;

}

При формировании матрицы сначала выделяется памяти для массива указателей на одномерные массивы, а затем в цикле с параметром выделяется память под n одномерных массивов.

Формирование динамических массивов с использованием операций new и delete - student2.ru **matr

*matr[1] *matr[2] *matr[3] . . . . *matr[n]

Формирование динамических массивов с использованием операций new и delete - student2.ru Формирование динамических массивов с использованием операций new и delete - student2.ru Формирование динамических массивов с использованием операций new и delete - student2.ru Формирование динамических массивов с использованием операций new и delete - student2.ru Формирование динамических массивов с использованием операций new и delete - student2.ru

Чтобы освободить память необходимо выполнить цикл для освобождения одномерных массивов

for(int i=0;i<n;i++)

delete matr[i];

После этого освобождаем память на которую указывает указатель matr

delete [] matr;

Постановка задачи

Написать программу, в которой создаются динамические массивы и выполнить их обработку в соответствии со своим вариантом.

Порядок выполнения работы

1. Ввести размер массива;

2.Сформировать массив с помощью операции new или библиотечных функций malloc (calloc);

3.Заполнить массив (можно с помощью датчика случайных чисел);

4.Выполнить задание варианта, сформировать новый массив(ы)-результат(ы);

5.Напечатать массив(ы)-результат(ы);

6.Удалить динамические массивы с помощью операции delete или библиотечной функции free.

Варианты заданий

1. Сформировать одномерный массив Удалить из него элемент с заданным номером, добавить элемент с заданным номером;

2. Сформировать одномерный массив. Удалить из него элемент с заданным ключом, добавить элемент с заданным ключом;

3. Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить элемент с заданным ключом;

4. Сформировать одномерный массив. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера;

5. Сформировать одномерный массив. Удалить из него К элементов, начиная с заданного номера, добавить К элементов, начиная с заданного номера;

6. Сформировать двумерный массив. Удалить из него строку с заданным номером;

7. Сформировать двумерный массив. Удалить из него столбец с заданным номером;

8. Сформировать двумерный массив. Добавить в него строку с заданным номером;

9. Сформировать двумерный массив. Добавить в него столбец с заданным номером;

10. Сформировать двумерный массив. Удалить из него строку и столбец с заданным номером.

11. Сформировать двумерный массив. Добавить в него строку и столбец с заданным номером.

12. Сформировать двумерный массив. Удалить из него все строки, в которых встречается заданное число.

13. Сформировать двумерный массив. Удалить из него все столбцы, в которых встречается заданное число.

14. Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении которых находится минимальный элемент.

15. Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении которых находится максимальный элемент.

16. Сформировать массив строк. Удалить из него самую короткую строку.

17. Сформировать массив строк. Удалить из него самую длинную строку.

18. Сформировать массив строк. Удалить из него строку, начинающуюся на букву "а".

19. Сформировать массив строк. Удалить из него строку, начинающуюся и заканчивающуюся на букву "а".

20. Сформировать массив строк. Удалить из него строку, начинающуюся и заканчивающуюся на одну и ту же букву.

21. Сформировать массив строк. Удалить из него строку с заданным номером.

22. Сформировать массив строк. Удалить из него К строк, начиная со строки с заданным номером.

23. Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк.

24. Сформировать массив строк. Удалить из него К первых строк.

25. Сформировать массив строк. Добавить в него строку с заданным номером.

Содержание отчета

1. Постановка задачи.

2. Функции для формирования массива, печати массива, преобразования массива, удаления массива.

3. Результаты выполнения работы.

Лабораторная работа № 11
"Информационные динамические структуры"

Цель: Знакомство с динамическими информационными структурами на примере одно- и двунаправленных списков.

Наши рекомендации