Аналогичные вычисления и анализ можно выполнять не для каждой строки, а для столбцов. Например, найдём и сразу выведем, не формируя массив, количество плохих оценок по каждому предмету, т. е. проанализируем элементы каждого столбца:
int K, I ;
for (int j=0; j<m; j++)
{ for (K=0, I =0; I <n; I ++)
if (A[I][j]==1 || A[I][j]== 2 || A[I][j] == 3) K++ ;
printf(“ \n%d-й столбец %d“ , j, K);
}
Особенность таких задач в том, что внешний цикл строим по номеру столбца. Во внутреннем цикле, изменяя первый “левый” индекс, обрабатываем столбец как одномерный массив. Как и в задачах предыдущего типа, важна правильная расстановка фигурных скобок и место операторов K=0; и printf.
Поскольку матрицы располагаются в памяти по строкам, то элементы столбца находятся не рядом, а на определённом удалении друг от друга. Поэтому обработка по столбцам малоэффективна для больших матриц и “слабых” компьютеров с точки зрения времени выполнения программ. Такую обработку желательно избегать, сформировав по–другому матрицу. Например, перед вводом матрицу можно транспонировать.