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

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

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

Операция

new имя_типа

или

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

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

Примеры:

1) int *i;

i=new int(10);

2) float *f;

f=new float;

Операция 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 одномерных массивов.

* *matr

*matr[1]

*matr[2]

*matr[3]

. . . .

*matr[n]

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

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

delete matr[i];

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

delete [] matr;

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

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

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

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

2.Сформировать массив с помощью операции new

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

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

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

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

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

Вариант 1

Дана целочисленная прямоугольная матрица. Определить :

  1. количество строк, не содержащих не одного нулевого элемента;

  2. максимальное из чисел, встречающихся в заданной матрице более одного раза.

Вариант 2

Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих не одного нулевого элемента.

Вариант 3

Дана целочисленная прямоугольная матрица. Определить :

  1. количество столбцов , содержащих хотя бы один нулевой элемент;

  2. номер строки, в которой находиться самая длинная серия одинаковых элементов.

Вариант 4

Дана целочисленная квадратная матрица. Определить :

  1. произведение элементов в тех строках , которые не содержат отрицательных элементов;

  2. максимум среди сумм элементов диагоналей , параллельных главной диагонали матрицы.

Вариант 5

Дана целочисленная квадратная матрица. Определить :

  1. сумму элементов в тех столбцах, которые не содержат отрицательных элементов;

  2. минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

Вариант 6

Дана целочисленная прямоугольная матрица. Определить:

  1. сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;

  2. номер строк и столбцов всех седловых точек матрицы.

Примечание. Матрица А имеет седловую точку Аij , если Аij является минимальным элементом в i-й строке и максимальным в j-м столбце.

Вариант 7

  1. Для заданной матрицы размером 8 на 8 найти такие К , что К-я строка матрицы совпадает с К-м столбцом.

  2. Найти сумму элементов в тех строках которые, содержат хотя бы один отрицательный элемент.

Вариант 8

  1. Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных нечётных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.

  2. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

Вариант 9

  1. Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой максимальна.

  2. Написать программу, которая проверяет, находится ли введенное с клавиатуры число в массиве. Массив должен вводится во время выполнения программы.

Вариант 10

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

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

Вариант 11

  1. Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет среднее арифметическое его элементов.

  2. Написать программу, которая выводит минимальный элемент введенного с клавиатуры двумерного массива.

Вариант 12

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

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

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