Составление алгоритма решения

Выбор метода решения

Анализ показывает, что решение задачи требует многократного вычисления суммы элементов каждой строки двумерных массивов 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