2015-11-05 100 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; 
}