Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

16.4 Практические задания

1. Составьте программу, которая создает двумерный массив (исходный массив инициализировать как с консоли, так и случайным образом), каждый элемент которого формируется по следующему правилу:

1) равен сумме его индексов;

2) числу элементов, расположенных в массиве после него;

3) произведению порядкового номера элемента в строке на число предшествующих элементов в столбце;

4) латинской букве алфавита, порядковый номер которой соответствует порядковому номеру элемента в строке;

При написании программы учесть, что размерность массива (количество строк и столбцов) задается пользователем.

2. Вывести на экран результат в виде таблицы, столбцы и строки которой обозначены соответствующими индексами массива.

3. Составьте программу, которая формирует двумерный массив целых чисел от 1 до 100 (размерностью 7 на 7) и транспонирует его. Организуйте вывод на экран исходного и транспонированного массива.

4. Найдите максимальный элемент в созданном двумерном массиве и заменить его значение суммой его индексов.

5. Полученный массив запишите в файл.

16.5 Контрольные задания

1. Из файла считать вещественные числа, сформировать двухмерный массив Arr[][10], для каждого одномерного массива вычислить сумму всех отрицательных элементов и произведение всех положительных.

2. Из файла считать вещественные числа, сформировать двухмерный массив Arr[][9], в каждом одномерном массиве из 9 элементов заменить значение последнего элемента на минимальное значение, найденное в соответствующем одномерном массиве.

3. Из файла считать целые числа, сформировать двухмерный массив Arr[][5],для каждого столбца которого вычислить сумму всех нечетных элементов и среднее значение.

4. Из файла считать вещественные числа, сформировать два двухмерных массива Arr[][7] так, чтобы первый содержал целую часть числа, а второй –дробную.

Лабораторная работа № 17 динамическИе массиВы

Цель работы: Получение практических навыков работы с динамическими массивами и пользовательскими функциями

Программные средства: MICROSOFT VISUAL STUDIO

17.1 Теоретические сведения

Динамический массив – это массив, размер которого заранее не фиксирован и может меняться во время исполнения программы. Работа с динамическими массивами строится на использовании указателей и специальные функции. Динамические массивы обеспечивать гибкость программы.

Последовательность использования динамических массивов в программе следующая:

1) объявление массива;

2) выделение памяти;

3) обработка элементов массива;

4) освобождение памяти.

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

<тип> * имя_массива;

где Имя_Массива – идентификатор массива, то есть имя указателя для выделяемого блока памяти.

тип – тип элементов объявляемого динамического массива.

Выделение памяти осуществляется с помощью библиотечных функцийдинамического распределения памяти malloc(size)и calloc(num, size_t), которая служит для выделения динамической памяти.

имя_массива = (тип *) malloc(N*sizeof(тип));

имя_массива = (тип *) сalloc(N, sizeof(тип));

Эти функции возвращают указатель на первый байт выделенной области памяти. Если для удовлетворения запроса нет достаточного объема памяти, возвращается нулевой указатель. Перед попыткой использовать распределенную память важно проверить, что возвращаемое значение не равно нулю.

Обработка элементов динамического массива происходит аналогично статическим, как через индексирование, так и по указателю. К i-му элементу динамического массива p можно обратиться одним из двух способов:

*(имя_массива+i) или имя_массива[i].

Изменением размеров массива после его создания можно управлять, используя функцию void* realloc(void* ptr, size_tsize), которая изменяет размер блока ранее выделенной памяти, адресуемой указателем ptr в соответствии с заданным размером size. Значение параметра size может быть больше или меньше, чем перераспределяемая область. Функция realloc() возвращает указатель на блок памяти, поскольку не исключена необходимость перемещения этого блока (например, при увеличении размера блока памяти). В этом случае содержимое старого блока (до size байтов) копируется в новый блок, поэтому функция возвращает указатель на перераспределенную память.

Когда использование массива завершено, необходимо освободить с помощью функции free().

free(имя_массива);

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

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