Второе занятие. Динамические массивы
-
Реализуйте функцию
ArraySum
, которая возвращает сумму элементов заданного динамического массива. Обратите внимание на проверку входного массива: если память под массив не выделена, значение параметра равноnil
, с этим значением работать нельзя. -
Продемонстрируйте использование
ArraySum
в основной программе: создайте массив, выведите его длину и сумму его элементов.
-
-
Дан массив, вывести его содержимое на экран, разделяя элементы точкой с запятой (процедураPrintIntArr
).Замечание. Процедура печати должна принимать массив и строку-разделитель элементов (параметр
delim: string
, delim ≠''
). Используйте для delim значение по умолчанию равное'; '
.Указание. Не забудьте о проверке входных параметров.
-
Заполнить массив целых чисел первыми N (N ≥ 0) положительными нечётными числами. Нужно написать два различных решения этой задачи:- Функция
MakeOddArr
с одним параметром N, возвращающая массив. - Процедура
FillOddArr
с двумя параметрами: входным N и выходным параметром-массивом целых чисел.
Указание. Не забудьте о проверке входных данных с помощью
Assert
.- Продемонстрируйте заполнение и печать массива для заданного пользователем значения N в основной программе.
- Функция
-
Заполнить массив целых чисел первыми N (N ≥ 0) числами Фибоначчи. Достаточно какой-нибудь одной реализации: функцииMakeFibArr
или процедурыFillFibArr
.Организуйте тестирование и демонстрацию в основной программе.
-
Дан массив целых чисел. Написать процедуруEvenMult2
с двумя параметрами — входным массивом целых чисел и выходным значениемevensCnt
целого типа, которая увеличивает все элементы массива с чётными значениями в два раза и записывает вevensCnt
количество таких элементов.Организуйте тестирование и демонстрацию процедуры в основной программе.
-
Описать функциюMakeRandomRealArr
с тремя параметрами: целым числом N (N ≥ 0), вещественными параметрами a, b (a < b). ФункцияMakeRandomRealArr
должна возвращать массив (типаRealArr
илиarray of real
) из N случайных вещественных элементов в диапазоне a..b.
Продемонстрируйте заполнение и печать массива (придётся добавить процедуру печати вещественных чиселPrintRealArr
) для заданного пользователем значения N в основной программе. Не забудьте привести логи.Указание. Посмотрите справку по перегруженным версиям функции
Random
. -
Дан непустой (не забудьте проверить непустоту!) массив вещественных чисел. Найти его наименьший элемент (функцияFindMinReal
). -
[Файлы:
DynArrs.pas
,DynArrsUnittests.pas
,task-08.pas
]
Дан массив целых чисел. Обнулить все его элементы с нечётными номерами (процедураSetToZeroOddInds
). Условный оператор не использовать.
Продемонстрируйте использованиеSetToZeroOddInds
в основной программе.
Задание 0 предназначено для введения в тему "Последовательности и работа с ними"
1. Создание и вывод:
1.1 Создайте целые числа последовательности от -20 до 30 с шагом 3 (Range).
1.2 Создайте вещественные числа последовательности от -4 до 4 с шагом 2 (Range).
1.3 Создайте N случайных чисел последовательности от -50 до 100 (SeqRandom).
1.4 Создайте N чисел последовательности, заполненные 5 (SeqFill).
1.5 Создайте N чисел последовательности c вводом (если рассматривали на лекции).
2. Написать функции, которые в последовательностях из пунктов 1.1-1.5, находят:
а) сумму нечетных элементов;
б) количество максимальных;
в) среднее арифметическое отрицательных
Задание на работу с динамическими массивами (простые)Дополнительные задания
-
Исправить процедуруPrintIntArr
так, чтобы за последним элементом символ-разделитель не ставился. Для пустого массива (нулевой длины) должна выводиться строка<empty>
. -
Дан массив целых чисел, содержащий не менее трёх элементов. Найти значение первого локального минимума (функцияFirstLocalMin
).Замечание. Элемент называется локальным минимумом, если он меньше каждого из своих соседей. Считать, что локальный минимум в массиве есть. Первый и последний элемент в качестве локальных минимумов не рассматривать.
-
Дан массив целых чисел, содержащий не менее трёх элементов. Найти значение и номер последнего локального максимума (процедура с двумя выходными параметрами).Замечание. Элемент называется локальным максимумом, если он больше каждого из своих соседей. Считать, что локальный максимум в массиве есть. Первый и последний элемент в качестве локальных максимумов не рассматривать.