К такому типу отнесём задачи, в которых выполняется анализ матрицы не отдельно для каждой строки или столбца, а для всей матрицы в целом. В таких алгоритмах можно обрабатывать её как по строкам, так и по столбцам. Но так как элементы матрицы располагаются в памяти по строкам, то более правильно организовать внешний цикл по номеру строки, а внутренний — по номеру столбца.
Найдём наибольший элемент во всей матрице и номер строки и столбца, на пересечении которых он находится:
int MyMax, Imax, Jmax;
MyMax=A[0][0]; Imax=Jmax=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
if ( A[i][j]>MyMax)
{ MyMax= A[i][j];
Imax=i;
Jmax=j; }
textcolor(10);
cprintf(" \n\r Max element= %d in %d row, %d column", MyMax,Imax, Jmax);
Обратим внимание, что операторы MyMax=A[0][0]; Imax=Jmax=0; располагаются вне всех циклов, так как мы находим общий наибольший элемент, т. е. одно число, а не для каждой строки или столбца отдельно. По этой же причине сprintf выполняется один раз. Поэтому фигурные скобки расставлены по–другому, не так, как в задачах первых двух типов. Заметим, что при “цветном” выводе с помощью cprintf для перехода в начало следующей строки недостаточно одного управляющего символа ‘\n’, а надо использовать и символ ‘\r’.