2016-11-23 136 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; 
} 

这样做会返回map [] []中最大的元素吗? (也会做同样的事情,但最小的元素)返回数组中最大的元素

+2

请提供[mcve] – KevinDTimm

+0

'if(max davmac

回答

0

map[]是无效的语法。您需要正确地为阵列建立索引。

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

你的地图查找似乎不具备标,而你缺少的max声明分号。还有一个风险是数组中的最大值小于0,在这种情况下,你的函数将返回0而不是真正的最大值。您可以通过重新定义max来采取一些默认值(例如,map[0][0]或负无穷)来解决此问题。

否则,只要数组尺寸为sizesize,是的,这会找到最大值。

0

如果每个数组元素都小于零,则不会。您可以用map[0][0]初始化max

0

要逐步完成2d数组,您需要两个for循环。从2d数组映射返回行i,列j的值的正确语法是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; 
}