如何使用函数在数组中找到最大数量

时间:2015-03-05 05:59:52

标签: c++ arrays function

在我的c ++类中,我应该使用这个“int mymaximum(int a [],int numberOfElements);”函数来查找数组中的最大数字。该函数应返回此数组中的最大值。

这是我到目前为止没有我需要使用的功能的代码。提前感谢并且对于凌乱的代码感到抱歉,仍在学习。

#include <iostream>

using namespace std;

int main() {
int Array[] = {23,2,90,53,38};
int mymaximum = 0;

for(int i = 0; i < 5; i++){
    if(Array[i] > mymaximum){
        mymaximum = Array[i];
    }
}
cout << "The Max is: " << mymaximum << "\n";
return 0;
}

4 个答案:

答案 0 :(得分:3)

我会在没有为你解决问题的情况下展示整体结构:

#include <iostream>

using namespace std;

int mymaximum(int a[], int numberOfElements) {
    int ret = 0;
    // compute the maximum and store in `ret'
    ...
    return ret;
}

int main() {
    int Array[] = {23,2,90,53,38};
    cout << "The Max is: " << mymaximum(Array, sizeof(Array) / sizeof(Array[0])) << "\n";
    return 0;
}

如果您想知道,sizeof(Array) / sizeof(Array[0])计算数组的大小,以便您不必在此处对其进行硬编码。

答案 1 :(得分:2)

只需绕过逻辑以在函数中找到最大值。像这样:

int mymaximum(int a[], int numberOfElements)
{
    // moved code from main() to here
    int mymaximum = 0;

    for(int i = 0; i < numberOfElements; i++)
    {
        if(a[i] > mymaximum)
        {
            mymaximum = a[i];
        }
    }
    return mymaximum;
}

麻生太郎,为了支持负数,修改你的逻辑:

int mymaximum(int a[], int numberOfElements)
    {
        // moved code from main() to here
        int mymaximum = a[0];

        for(int i = 1; i < numberOfElements; i++)
        {
            if(a[i] > mymaximum)
            {
                mymaximum = a[i];
            }
        }
        return mymaximum;
    }

请注意,现在我使用数组中的第一个条目初始化最大值!

main()中调用您的方法:

int main() {
    int Array[] = {23,2,90,53,38};
    cout << "The Max is: " << mymaximum(Array, sizeof(Array) / sizeof(Array[0])) << "\n";
    return 0;
}

答案 2 :(得分:1)

只需将您的逻辑移动到所需的功能,如下所示:

int mymaximum(int Array[], int numberOfElements)
{
    int mymaximum = 0;

    for(int i = 0; i < numberOfelements; i++){
        if(Array[i] > mymaximum){
            mymaximum = Array[i];
        }
    }
    return mymaximum;
}

将其放在int main()上方,然后在main()内,将删除的代码替换为:

    int mymaximum = ::mymaximum(Array, 5);

(如果局部变量或函数具有不同的名称,则不需要::

然后,您应该在sasha的评论中应用该建议,以最大限度地使用[0]作为初始猜测。

答案 3 :(得分:0)

for循环结构替换为:

int max(0);
max = mymaximum(Array, 5);

在函数mymaximum中使用以下代码:

int max(a[0]);
for(auto i(1); i < numberOfElements; ++i)
    if(a[i] > max)
        max = a[i];

return max;