Лабораторная работа № 2.
Двумерный динамический массив

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

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

Найти минимальный элемент первой строки матрицы, все элементы которой положительны. Если такой строки нет, сформировать новый массив – определить количество нулевых элементов в каждой строке матрицы. Также определить в каком из двух одномерных массивов минимальный элемент больше.

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

Выбрать подходящий тип подпрограмм – процедура или функция. Использовать досрочный выход из цикла. Подпрограммы реализовать в отдельном модуле.

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

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

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

Класс Имя Смысл Тип Структура
Входные данные a Исходная матрица вещ. двумерный массив
x, y Исходные массивы вещ. одномерный массив
Выходные данные k Номер первой строки, все элементы которой положительны цел. простая переменная
min Минимальный элемент первой строки, все элементы которой положительны вещ. простая переменная
b Количество нулевых элементов в каждой строке матрицы цел. одномерный массив
minx, miny Минимальные элементы массивов x и y соответственно вещ. простая переменная

2.2. Функция, проверяющая, что одномерный массив содержит только положительные элементы

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

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

Класс Имя Смысл Тип Структура
Входные данные x Исходная матрица вещ. двумерный массив
Выходные данные result Номер первой строки, содержащей только положительные элементы (-1, если такой строки нет) цел. простая переменная

2.4. Функция, находящая минимальный элемент одномерного массива

Класс Имя Смысл Тип Структура
Входные данные x Исходный массив вещ. одномерный массив
Выходные данные result Минимальный элемент массива вещ. простая переменная

2.5. Процедура, определяющая количество нулей в каждой строке матрицы

Класс Имя Смысл Тип Структура
Входные данные x Исходная матрица вещ. двумерный массив
Выходные данные y Количество нулевых элементов в каждой строке матрицы цел. одномерный массив

2.6. Функция, находящая количество нулевых элементов в одномерном массиве

Класс Имя Смысл Тип Структура
Входные данные x Исходный массив вещ. одномерный массив
Выходные данные result Количество элементов массива цел. простая переменная

3. Аномалии

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

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

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

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

№ теста Входные данные Ожидаемые результаты Смысл теста
1 m = 3, n = 3
a = 1 -2  3
   -4  5  6
    7  8 -9
nx = 5
x = {3, 4, 5, 6, 7}
ny = 4
y = {5, 4, 3, 2}
k = -1
b = {0, 0, 0}
minx = 3
miny = 2
Нет нулей. Нет строк, содержащих только положительные элементы.
В массиве x минимальный элемент – первый, в массиве y минимальный элемент – последний.
2 m = 4, n = 4
a = 1  0  3  4
    5 -6 -7  8
    9 10 11 12
   13 14 15 16
nx = 5
x = {5, 4, 3, 2, 1}
ny = 6
y = {0, 1, 2, 4, 8, 16}
k = 2
min = 9
b = {1, 0, 0, 0}
minx = 1
miny = 0
Есть нули. Есть строка, содержащая только положительные элементы. Минимальный элемент – первый.
В массиве x минимальный элемент – последний, в массиве y минимальный элемент – первый.
3 m = 6, n = 3
a =  1  0  5
     0 -9  0
     1 -3  4
     0  0  0
     7  0  0
   -25  4  8
nx = 5
x = {3, 4, -5, 6, 7}
ny = 4
y = {5, 4, -3, 2}
k = -1
b = {1, 2, 0, 3, 2, 0}
minx = -5
miny = -3
Есть нули. Нет строк, содержащих только положительные элементы.
Минимальные элементы массивов находятся в середине.
4 m = 4, n = 3
a =  12  8  5
    -1 -2  0
     0  5  6
     2  5  7
nx = 4
x = {1, 0, 7, 9}
ny = 5
y = {1, -5, 3, 5, 8}
k = 0
min = 5
b = {0, 1, 1, 0}
minx = 0
miny = -5
Есть нули. Строка, содержащая только положительные элементы, – первая. Минимальные элемент – последний.
Минимальные элементы массивов находятся в середине.

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

7. Метод

Для определения строки, содержащей только положительные элементы, разрабатываем функцию, проверяющую, что одномерный массив содержит только положительные элементы, и применяем её последовательно к строкам матрицы. При нахождении искомой строки выходим из цикла. Если такая строка есть, вызываем функцию поиска минимума, иначе – процедуру определения количества нулевых элементов в каждой строке матрицы, которая формирует соответствующий массив. Для определения количества нулевых элементов в одной строке также используем дополнительную подпрограмму. Для поиска минимальных элементов в массивах x и y используем уже реализованную функцию поиска минимума.