2017-06-22 27 views
-2

我試圖寫一個函數在一個數組求最大值,而無需使用任何C++內置在像排序,max_element功能等C++:功能爲最大數組值工作不當

我已經開發了這個下面的代碼,並且它最終決定了「最大值」,但它並不總是正確的:

double dispMax(int farray[], int maxValue) 
{ 

    int max = farray[0]; 

    for (int x = 0; x < maxValue; x++) //maxValue is size of farray 
    { 

     if (farray[x] > max) 
     { 

      max = farray[x]; 
      return max; 

     } 

    } 

} 

的farray []是未排序的,而只是一個數據類型(例如(123.25,234.3名單的組成,345.12))。

有時它似乎甚至不會在整個數組中迭代,就好像它只是找到它認爲是最大值的東西,然後立即返回該值。另外,如果我調整函數來找到一個最小值,我會得到一個類似的結果,它幾乎是最小值,但並不完全。

任何幫助都很讚賞!

+1

'maxValue是farray的大小'偉大的名字!無論如何,你可以通過一個調試器輕鬆搞定。 – juanchopanza

+1

將'return max'放在循環之外。就這樣。 – skypjack

+1

解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,你應該[編輯]你的問題,以包含一個[Minimal,Complete,and Verifiable](http://stackoverflow.com/help/mcve)例子來重現你的問題,以及你在調試器中所做的觀察。 –

回答

1

返回處於錯誤的地方

Supose陣列是1 2 3

所以最大= 1;

然後,當它進入所述第二值

farray [1] = 2,它比1更大,所以返回(?)

把返回外部for循環中,讓在循環遍歷所有array

double dispMax(int farray[], int maxValue) 
{ 
    // need to be double 
    double max = farray[0]; 
    for (int x = 0; x < maxValue; x++) //maxValue is size of farray 
    { 
     if (farray[x] > max) 
     { 
      max = farray[x];  
     } 
    } 
    return max; 
}