2016-11-23 2 views
-3
/* return the largest element in map[size][size] */ 
double map_max(size_t size, double **map) { 
double max = 0; 
for (int i = 0; i < size; i++) { 
    for (int j = 0; j < size; j++) { 
     if (max < map[]) { 
       max = map[]; 
      } 
     } 
    } 

    return max; 
} 

будет ли это работать, чтобы вернуть самый большой элемент на карте [] []? (также будет делать то же самое, но для самого маленького элемента)Возврат самого большого элемента в массиве

+2

Пожалуйста обеспечивают [mcve] – KevinDTimm

+0

'если (макс <карту [])', где ваши показатели? (например, какой элемент должен сравниться?) – davmac

ответ

0

map[] Недопустимый синтаксис. Вам нужно правильно индексировать массив.

if (max < map[i][j]) { 
     max = map[i][j]; 
    } 
1

Ваша карта поиски, похоже, не имеют нижние индексы, и вы пропустили точку с запятой об объявлении max. Также существует риск того, что максимальное значение в массиве будет меньше 0, и в этом случае ваша функция вернет 0 вместо истинного максимума. Вы можете исправить это, переопределив max, чтобы взять какое-то значение по умолчанию (скажем, map[0][0] или отрицательную бесконечность).

В противном случае при условии, что размеры массива size по size, да, это найдет максимальное значение.

0

Это не будет, если каждый элемент массива меньше нуля.

Вы можете инициализировать max с помощью map[0][0].

0

Чтобы пройти через массив 2d, вам нужно два цикла, как и вы. Правильный синтаксис для возврата значения строки i, столбца j из карты массива 2d равен map[i][j].

/* return the largest element in map[size][size] */ 
double map_max(size_t size, double **map) { 
    double max = 0; 
    for (int i = 0; i < size; i++) { 
     for (int j = 0; j < size; j++) { 
      if (map[i][j] > max) { 
       max = map[i][j]; 
      } 
     } 
    } 
    return max; 
} 
Смежные вопросы