2016-12-15 135 views
-1

我可以在我的數組中找到最小值索引。我發現了很多關於它的指南,我也這樣做,但我的回答不正確。查找數組中的最小元素索引

double minimum = main_array[0]; 
    int index_min; 

    for (int i=1; i<ARRAY_SIZE; i++) { 
     if (main_array[i] < minimum) 
      minimum = main_array[i]; 
      index_min = i; 
} 

我得到的答案是數組中最後一個元素的索引,而不是最低值的元素。

+1

'if(main_array [i] 'if(main_array [i]

+1

使用['std :: min_element'](http://en.cppreference.com/w/cpp/algorithm/min_element)?它會返回一個迭代器(對於數組來說它是一個指針),但是很容易從中得到一個索引。 –

+0

只需要用括號括住'index_min = i''if'語句;' –

回答

1

您需要正確包裹,如果條件當你更新index_min:

if (main_array[i] < minimum) { 
      minimum = main_array[i]; 
      index_min = i; 
    } 
+0

同意。重新填寫答案語言。 – DhruvPathak

+0

Okey,謝謝我對此有疑問。爲什麼然後我可以找到最小值正確的語法錯誤? – Satnam

0

你忘了一些支架。正確的縮進將有助於看到這一點。目前您的代碼如下所示:

for (int i=1; i<ARRAY_SIZE; i++) 
{ 
    if (main_array[i] < minimum) 
     minimum = main_array[i]; // sets the minimum correctly 
    index_min = i; // updates the index every run, resulting in index_min == ARRAY_SIZE -1 
} 

但你希望:

for (int i=1; i<ARRAY_SIZE; i++) 
{ 
    if (main_array[i] < minimum) 
    { 
     minimum = main_array[i]; 
     index_min = i; // only if a new minimum is found update the index_min variable 
    } // note the extra brackets ;-) 
} 

此外,在C和C++您通常使用EAC花括號一個額外的行。

相關問題