2015-11-05 148 views
1

我正在寫一個函數來返回一個數組的最大值,目前它沒有返回正確的值。C++數組函數沒有返回正確的結果

功能:

int findMax(int maximum[ARRAY_SIZE]) 
{ 
    int largest=maximum[0]; 

    for(int i=0;i<ARRAY_SIZE;i++) 
    { 
     if (maximum[i]>largest) 
     { 
      return largest=maximum[i]; 
     } 
    } 
} 

主要功能部分:

cout<<"Maximum number: "<< findMax(numbers) <<endl; 
+1

您不應該從循環中返回值,而是保存它。最後返回「最大」。 –

回答

0
for(int i=0;i<ARRAY_SIZE;i++) 
{ 
    if (maximum[i]>largest) 
    { 
      return largest=maximum[i]; 
    } 
} 

for循環,當它發現一個更大的聲明將停止,它可能不檢查數組中的所有元素。 應當修改如下圖所示:你在陣列檢查

for(int i=0;i<ARRAY_SIZE;i++) 
    { 
     if (maximum[i]>largest) 
     { 
      largest=maximum[i]; 
     } 
    } 
return largest; 

每一個時代的元素,如果它比目前的最高值,則當前的元素更新最大值。最後返回最大值

2

return largest=maximum[i];這條線將通過早期發現返回的第一個元素的環形折返。

在循環之後,您可能只想做largest = maximum[i];,然後return largest;

但是,你正在使用C++,你爲什麼要推出自己的findMax功能:

int array[] = {1,100,65,21,12,5}; 
int* max = ::max_element(begin(array), end(array)); 
1

return(在某種程度上)立即結束函數調用。你想要更新largest,並在findMaxreturn largest的末尾。

您可能還想閱讀完整的C++課程並以更合理的方式命名參數。

int findMax(int data[], std::size_t size) 
{ 
    int largest=data[0]; 

    for(std::size_t i=0 ; i < size ; ++i) 
    { 
     if (data[i] > largest) 
     { 
      largest = data[i]; 
     } 
    } 

    return largest; 
}