Лабораторная работа № 3.
Рекурсия

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

Если в массиве есть нулевые элементы, найти произведение положительных элементов.

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

Ввод всех данных осуществляется из файла, вывод – в файл. Имена файлов передаются через параметры программы.

В спецификации для каждой функции нарисовать дерево рекурсивных вызовов для массива из 7 элементов.

2. Таблица данных

2.1. Основная программа

Класс Имя Смысл Тип Структура
Входные данные a Исходный массив вещ. одномерный массив
n Количество элементов массива цел. простая переменная
Выходные данные f Признак наличия нулевых элементов в массиве лог. простая переменная
p Произведение положительных элементов в массиве вещ. простая переменная

2.2. Функция проверки наличия в массиве нулевых элементов

Класс Имя Смысл Тип Структура
Входные данные x Исходный массив вещ. одномерный массив
n1, n2 Границы индексов для обработки цел. простая переменная
Выходные данные f Признак наличия нулевых элементов в массиве лог. простая переменная

2.3. Функция вычисления произведения положительных элементов массива

Класс Имя Смысл Тип Структура
Входные данные x Исходный массив вещ. одномерный массив
n1, n2 Границы индексов для обработки цел. простая переменная
Выходные данные p Произведение положительных элементов вещ. простая переменная

3. Аномалии

  1. Недостаточно параметров.
  2. Невозможно открыть файл для чтения.
  3. Некорректные данные во входном файле.
  4. Невозможно открыть файл для записи.

4. Входная форма

5. Выходная форма

6. Тестовые примеры

№ теста Входные данные Ожидаемые результаты Смысл теста
1 n = 9
a = {2, -5, 4, 5, -7, 2, 0, -10, -1}
f = true
p = 80
В массиве есть как положительные, так и нулевые элементы.
2 n = 8
a = {2, -3, 1, 5, -5, 10, -10, 0}
f = true
p = 100
В массиве есть как положительные, так и нулевые элементы.
3 n = 7
a = {1, 2, 3, 4, 5, 6, 7}
f = false
p = 5040
В массиве есть только положительные элементы.
4 n = 3
a = {-1, -5, -8}
f = true
p = 1
В массиве нет ни нулевых, ни положительных элементов.
5 n = 3
a = {3, g, 7}
  Некорректные исходные данные.

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

7. Метод

Функция проверки наличия нулевых элементов Condition в качестве исходных данных получает массив x и границы индексов элементов массива для обработки n1 и n2 и реализует линейную рекурсию:

Функция поиска произведения положительных элементов Product в качестве исходных данных получает массив x и границы индексов элементов массива для обработки n1 и n2 и реализует каскадную рекурсию: