Второе занятие. Динамические массивы

    Задание 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, находят:

      а) сумму нечетных элементов;

      б) количество максимальных;

      в) среднее арифметическое отрицательных

    Задание на работу с динамическими массивами (простые)


    • Реализуйте функцию ArraySum, которая возвращает сумму элементов заданного динамического массива. Обратите внимание на проверку входного массива: если память под массив не выделена, значение параметра равно nil, с этим значением работать нельзя.

    • Продемонстрируйте использование ArraySum в основной программе: создайте массив, выведите его длину и сумму его элементов.


  1. Дан массив, вывести его содержимое на экран, разделяя элементы точкой с запятой (процедура PrintIntArr).

    Замечание. Процедура печати должна принимать массив и строку-разделитель элементов (параметр delim: string, delim''). Используйте для delim значение по умолчанию равное '; '.

    Указание. Не забудьте о проверке входных параметров.


  2. Заполнить массив целых чисел первыми N (N ≥ 0) положительными нечётными числами. Нужно написать два различных решения этой задачи:

    1. Функция MakeOddArr с одним параметром N, возвращающая массив.
    2. Процедура FillOddArr с двумя параметрами: входным N и выходным параметром-массивом целых чисел.

    Указание. Не забудьте о проверке входных данных с помощью Assert.

    • Продемонстрируйте заполнение и печать массива для заданного пользователем значения N в основной программе.

  3. Заполнить массив целых чисел первыми N (N ≥ 0) числами Фибоначчи. Достаточно какой-нибудь одной реализации: функции MakeFibArr или процедуры FillFibArr.

    Организуйте тестирование и демонстрацию в основной программе.


  4. Дан массив целых чисел. Написать процедуру EvenMult2 с двумя параметрами — входным массивом целых чисел и выходным значением evensCnt целого типа, которая увеличивает все элементы массива с чётными значениями в два раза и записывает в evensCnt количество таких элементов.

    Организуйте тестирование и демонстрацию процедуры в основной программе.
     


  5. Описать функцию MakeRandomRealArr с тремя параметрами: целым числом N (N ≥ 0), вещественными параметрами a, b (a < b). Функция MakeRandomRealArr должна возвращать массив (типа RealArr или array of real) из N случайных вещественных элементов в диапазоне a..b.
    Продемонстрируйте заполнение и печать массива (придётся добавить процедуру печати вещественных чисел PrintRealArr) для заданного пользователем значения N в основной программе. Не забудьте привести логи.

    Указание. Посмотрите справку по перегруженным версиям функции Random.


  6. Дан непустой (не забудьте проверить непустоту!) массив вещественных чисел. Найти его наименьший элемент (функция FindMinReal).



  7. [Файлы: DynArrs.pas, DynArrsUnittests.pas, task-08.pas]
    Дан массив целых чисел. Обнулить все его элементы с нечётными номерами (процедура SetToZeroOddInds). Условный оператор не использовать.


    Продемонстрируйте использование SetToZeroOddInds в основной программе.

Дополнительные задания


  1. Исправить процедуру PrintIntArr так, чтобы за последним элементом символ-разделитель не ставился. Для пустого массива (нулевой длины) должна выводиться строка <empty>.


  2. Дан массив целых чисел, содержащий не менее трёх элементов. Найти значение первого локального минимума (функция FirstLocalMin).

    Замечание. Элемент называется локальным минимумом, если он меньше каждого из своих соседей. Считать, что локальный минимум в массиве есть. Первый и последний элемент в качестве локальных минимумов не рассматривать.


  3. Дан массив целых чисел, содержащий не менее трёх элементов. Найти значение и номер последнего локального максимума (процедура с двумя выходными параметрами).

    Замечание. Элемент называется локальным максимумом, если он больше каждого из своих соседей. Считать, что локальный максимум в массиве есть. Первый и последний элемент в качестве локальных максимумов не рассматривать.