2016-06-13 82 views
-3

我有这个功能,我想你的帮助,找到是否有多个最大值。如果存在多个最大值,我想打印“没有唯一的最大值”。如何计算一个数组中有多少个最大值?

下面的代码成功地找到了最大,但计数器,这countes最大出现了多少次不能正常工作,我得到这个消息:

建议围绕空体括号在C

int find_max(int b[N][N]) 
{ 
    int max = b[0][0]; 
    int x,y; 
    int counter=0; 
    int a=0,v=0,c=0; 
    for (x = 0; x < N; x++) 
    { 
     for (y = 0; y < N; y++) 
     { 
      if (max < b[x][y]) 
      { 
       max = b[x][y]; 
       a=x; 
       v=y; 
      } 
     } 
    } 

    c=((a*10)+v); 
    for (x = 0; x < N; x++) 
    { 
     for (y = 0; y < N; y++) 
     { 
      if(max); 
      { 
      counter++; 
      } 
     } 
    } 
if(counter>1) 
    printf("no uniqe max"); 
else 
    return c; 
} 
+2

你应该能够做到的一大堆在单次通过阵列。如果当前值高于当前最大值,则记录新的最大值并将计数值设置为1.如果当前值等于当前最大值,则向计数值加1。否则,请忽略该行。 –

+0

'if(max);'因为';'什么都不做。 – chux

回答

1

乍一看:

if(max == b[x][y]) // not if(max); 
{ 
    counter++; 
} 
2

我相信问题(至少一个问题)是下面的行:

if(max); 

如果max不是零,那么这将始终为真。我想你想要的东西,如:

if(b[x][y] == max) 

(注:比较和去除的两个“;”)

警告是(我怀疑)的未来“;”在'if'之后,这会终止if和下一节'{...}',它总是被执行,它不会与if相关联。

+0

我仍然得到相同的评论 – kayan

+0

对不起,我把一个额外的')'在if。我纠正了它。你使用的是什么操作系统和编译器?通常,当编译器发出警告或错误时,它会提供相关的行号。您可能想要发布该信息。 – Dweeberly

+0

当没有唯一最大值时,该警告可能是因为没有返回值...当没有唯一最大值时尝试返回-1 – Cherubim

相关问题