- •Объектно-ориентированное программирование
- •/ И. М. Виноградова. — Барановичи: рио БарГу, 2011 — с. Экз.
- •Структура программы. Операторы и выражения
- •Краткие теоретические сведения
- •Классификация данных
- •Декларирование объектов
- •Стандартные математические функции
- •Структура программы
- •Ввод с помощью потока cin
- •Вывод с помощью потока cout
- •Пример программы работы
- •Задания:
- •Контрольные вопросы
- •Операторы ветвления. Битовые операции
- •Краткие теоретические сведения
- •If (условие) оператор1; [else оператор2;]
- •Замечания
- •Цикл с предусловием (while)
- •Битовые операции
- •Примеры
- •Задания
- •Варианты задания
- •Контрольные вопросы
- •Циклические и вычислительные процессы
- •Краткие теоретические сведения Цикл с постусловием (do while)
- •Оператор break
- •Оператор break
- •Задания
- •Контрольные вопросы
- •Обработка статических массивов
- •Краткие теоретические сведения Объявление массива
- •Пример решения задачи по массивам
- •Полный текст программы
- •Варианты задания
- •Контрольные вопросы
- •Массивы и указатели
- •Краткие теоретические сведения
- •Указатели
- •Указатели и массивы
- •Формирование динамических массивов с использованием операций new и delete
- •Постановка задачи
- •Порядок выполнения работы
- •Варианты задания
- •Контрольные вопросы
- •Обработка символов, строк, текста
- •Краткие теоретические сведения
- •"Строковый ввод-вывод"
- •Примеры решения задач
- •Код программы
- •Код программы 2
- •Варианты задания:
- •Контрольные вопросы
- •Модульное программирование
- •Цель работы:
- •Краткие теоретические сведения.
- •Параметры функции
- •Локальные и глобальные переменные
- •Передача одномерных массивов как параметров функции
- •Передача строк в качестве параметров функций
- •Передача многомерных массивов в функцию
- •Постановка задачи
- •Порядок выполнения работы
- •Варианты заданий
- •Контрольные вопросы
- •Цель работы:
- •Краткие теоретические сведения
- •Id_класса id_объекта;
- •Id_объекта. Id_метода;
- •Задание к лабораторной работе № 8
- •Постановка задачи
- •Контрольные вопросы
- •Объектно-ориентированное программирование Методические указания
- •225404 Г. Барановичи, ул. Войкова, 21
Формирование динамических массивов с использованием операций 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
Дана целочисленная прямоугольная матрица. Определить :
количество строк, не содержащих не одного нулевого элемента;
максимальное из чисел, встречающихся в заданной матрице более одного раза.
Вариант 2
Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих не одного нулевого элемента.
Вариант 3
Дана целочисленная прямоугольная матрица. Определить :
количество столбцов , содержащих хотя бы один нулевой элемент;
номер строки, в которой находиться самая длинная серия одинаковых элементов.
Вариант 4
Дана целочисленная квадратная матрица. Определить :
произведение элементов в тех строках , которые не содержат отрицательных элементов;
максимум среди сумм элементов диагоналей , параллельных главной диагонали матрицы.
Вариант 5
Дана целочисленная квадратная матрица. Определить :
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Вариант 6
Дана целочисленная прямоугольная матрица. Определить:
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
номер строк и столбцов всех седловых точек матрицы.
Примечание. Матрица А имеет седловую точку Аij , если Аij является минимальным элементом в i-й строке и максимальным в j-м столбце.
Вариант 7
Для заданной матрицы размером 8 на 8 найти такие К , что К-я строка матрицы совпадает с К-м столбцом.
Найти сумму элементов в тех строках которые, содержат хотя бы один отрицательный элемент.
Вариант 8
Характеристикой столбца целочисленной матрицы назовём сумму модулей его отрицательных нечётных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
Вариант 9
Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой максимальна.
Написать программу, которая проверяет, находится ли введенное с клавиатуры число в массиве. Массив должен вводится во время выполнения программы.
Вариант 10
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по строкам.
Написать программу, которая вычисляет, сколько раз введенное с клавиатуры число встречается в массиве.
Вариант 11
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет среднее арифметическое его элементов.
Написать программу, которая выводит минимальный элемент введенного с клавиатуры двумерного массива.
Вариант 12
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элемента.