Язык программирования Pascal. Процедуры и функции. Рекурсия. Васильев В.В - 16 стр.

UptoLike

16
последнего элемента массива, SizeOf() - возвращает размер фактического пара-
метра - массива.
Фактические параметры -массивы должны состоять из элементов одно -
го типа (совпадающего с типом элементов формального параметра-
массива ) и могут быть описаны как массивы разного размера.
Разберем задачу, в которой в функцию требуется передавать массивы раз -
ной длины .
Задача 3. Для заданной вещественной матрицы опре-
делите, образуют ли ее элементы упорядоченную последова-
тельность при их переборе по спирали , представленной
справа. Для определения факта упорядоченности части стро-
ки (столбца) используйте функции.
Будем считать, что задана вещественная матрица A размера mxn. Эле -
менты матрицы , перебираемые по указанной схеме, могут быть упорядочены
по неубыванию и невозрастанию . Создадим логические функции rost и spad,
которые будут проверять, упорядочен ли передаваемый им в качестве аргумен-
та массив по невозрастанию и по неубыванию соответственно.
Аргументом функций rost и spad будет вспомогательный массив v, в ко-
торый помещается часть строки или столбца очередного витка спирали . В ка-
честве аргумента функциям rost и spad передается и количество элементов в
части строки или столбца.
На схеме справа показана закономерность из -
менения индексов при обходе матрицы по спирали .
p - номер текущего витка спирали . Количество вит-
ков спирали p_max находится как результат цело-
численного деления на два суммы единицы и мень-
шего из m и n.
Логические переменные f и g используются
для хранения ответов на вопросы :
Упорядочены ли элементы матрицы , перебираемые по спирали , по неубыва-
нию и по невозрастанию ? Первоначально переменным f и g присваивается
значение true.
Организуем цикл по p от 1 до p_max.
Проверим, упорядочена ли верхняя строка p-го витка. Для этого органи -
зуем цикл по j от p-1 до n-p+1 (см . схему выше). В цикле перебираются столбцы .
Запишем верхнюю строку p-го витка во вспомогательный массив v размера r,
где r = n-2p+3. Во вспомогательный массив записываются элементы матрицы
A [p, j]. Начинать цикл от p-1 нужно для того, чтобы обеспечить проверку упо-
рядоченности стыков” двух витков спирали . Отсюда следует особый слу-
чай: на первом витке спирали стыков” нет , поэтому при p=1 первую итера-
цию цикла нужно пропустить без действий.
Переменная f принимает значение результата конъюнкции своего прежне-
го значения и значения функции rost(v,r). Переменная g принимает значение