2016-02-06 3 views
-3

Я изучаю код на C. Я написал следующий код, чтобы найти максимальное значение внутри матрицы, но по какой-то причине программа вернет наивысшее значение в первой строке (87), за исключением желаемого 99. Я не могу найти недостаток в коде. Был бы очень рад за помощь!Поиск максимального значения в матрице (программирование на С)

#include <stdio.h> 

int Maxmin(int a[][4], int row, int col) { 
    int i, j, max; 
    max = a[0][0]; 

    for (i = 0; i < row; i++) { 
    for (j = 0; j < col; j++) { 
     if (a[i][j] > max) 
     max = a[i][j]; 
    } 
    return max; 
    } 
} 

void main() { 
    int a[3][4] = { 
    { 3, 87, 11, 23 }, 
    { 99, 78, 19, 44 }, 
    { 59, 60, 13, 14 } 
    }; 

    int num; 
    num = Maxmin(a, 3, 4); 
    printf("%d\n", num); 
} 
+4

Отклоните свой код правильно и последовательно; ваш оператор возврата внутри одной из петель. – Mat

+1

'return max;' находится внутри цикла. – Rabbid76

+0

Почему вы помещаете это в раздел комментариев, а не в раздел ответов? – sami1592

ответ

2

Не очень легко определить, как правило, ошибки, как это вниз, чтобы я & J опечаток. return max; находится внутри цикла строки.

Переместите его в конец функции, а затем вы проверите каждую строку матрицы. Я действительно скомпилировал и выполнил это исправление.

Путь обнаружить такие ошибки, необходимо либо поставить в дополнительные заявления для печати, например:

printf("a[%d][%d]=%d ", i, j, a[i][j]); 

Или шаг через вашу программу с помощью отладчика, установив точку останова на код, который вы заинтересованы in

+1

Ну, это очень легко заметить при переходе с отладчиком. –

+0

Я попытался адаптировать ответ для новичка, каждый делает ошибки, а иногда это глупые глупые, которые трудно найти. Я фактически прекратил использовать i & j некоторое время в 80-х, потому что я потратил несколько дней на поиски тонкой ошибки в большой программе, которая была в основном невидима на плохих печатных изданиях того времени, поскольку i & j были почти неотличимы. – Rob11311