在我的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;
}
答案 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;