2016-06-13 81 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

相關問題