Построчная обработка предполагает, что для каждой строки матрицы требуется найти некоторый параметр (сумму, количество элементов строки с некоторым условием, наибольший (наименьший) элементы, определенный элемент (например, 0) и т.д.
Особенность: не обязательно надо анализировать все элементы строки.
Решение: внешний цикл строится по номеру строки, а в одном или нескольких внутренних циклах обрабатывается строка как одномерный массив. При этом полученные характеристики строк можно запоминать в одномерном массиве размерности n или выводить сразу по мере получения.
Пример: пусть задана матрица A[n][m], в которой Аij – оценка i-го студента на j-м экзамене. Задача нахождения среднего балла каждого студента S[n] относится к рассматриваемому типу.
Рассмотрим вариант части программы:
const int n=10;
const int m=5;
int A[n][m], Sum;
double S[n];
for (int i=0; i<n; i++)
{ Sum =0;
for (int j=0; j<m;)
Sum += A[i][j++];
S[i] = Sum/m;
}
Замечания:
- Массив S и переменная Sum должны объявляться с типом double или:
double S[n]; int Sum;… S[i] = double (Sum)/m; или S[i] = (Sum+0.0)/m;
- Массив S имеет размерность n (количество строк матрицы) и индекс его элемента совпадает с номером строки (i), а не столбца (j).
- Оператор Sum = 0;должен располагаться между операторами for, так как для каждой строки суммирование необходимо начинать с первого столбца.
- Оператор S[i] = Sum/m;должен располагаться внутри внешнего, но вне внутреннего цикла.