Составление алгоритма решения
Выбор метода решения
Анализ показывает, что решение задачи требует многократного вычисления суммы элементов каждой строки двумерных массивов A и B. В первом случае m элементов сумм массива A, во втором – t элементов сумм массива B.
Результаты вычислений для положительных сумм каждой исходной матрицы представляются одномерными массивами SSA(mp) и SSB(tp), где mp и tp – размеры созданных массивов. Такое вычисление удобно выполнить в циклическом процессе, оформленном дополнительным алгоритмом, входным параметром которого является исходный двумерный массив, а выходным – результирующий одномерный.
Для рассматриваемой задачи в качестве входных формальных параметров дополнительного алгоритма выберем, например, имя массива Z и его размеры kxp. Тогда в качестве выходных параметров можно использовать одномерный массив SSZ размером d (количеством положительных сумм). Следовательно, в качестве формальных параметров выбраны Z(kxp), SSZ(d).
Для работы с подпрограммой организуются обращения к ней из основного алгоритма. Естественно, что в обращениях используются входные и выходные фактические параметры.
Поэтому, задавшись именем подпрограммы sum_str, сформируем два обращения к ней: для расчёта положительных сумм элементов строк массива A – sum_str(A(mxn) ,SSA(mp)) и для тех же вычислений с массивом B – sum_str(B(txs), SSB(tp)). Первый параметр в каждом обращении является входным и определяет имя и размеры передаваемого в подпрограмму двумерного массива. Второй параметр является выходным, предназначенным для получения одномерного массива значений положительных сумм строк из подпрограммы.
В основном алгоритме выполним ввод и вывод исходных двумерных матриц.
В дополнительном алгоритме произведём вычисление текущего значения суммы элементов каждой строки, проверку его знака с формирование положительных сумм в формальный одномерный массив. При формировании этого массива используется параметр цикла (индекс d), изменяющий своё значение от начального (d = 0) до конечного по закону изменения d = d + 1 для каждой положительной суммы. Полученное конечное значение индекса определяет искомые значения размеров формируемых массивов A(mp) и B(tp).
Обращение к дополнительному алгоритму произведем двукратно, что позволит последовательно передать в него каждый из исходных массивов. Алгоритмы представлены схемами рис. 6.8.
Рис. 6.8. Схемы основного и дополнительного алгоритмов примера 6.4