所以我遇到了一些问题。我必须创建一个函数,它将在数组中找到最小的数字。我知道一种方法,使用过量的if / else if,如果数组大小改变,它将不会有任何好处。我知道使用for循环应该可以解决问题,但我无法弄清楚如何编写它。任何正确方向的推动都将非常感激。
#include <iostream>
using namespace std;
int findLowest(int[]);
int main()
{
int AR[5] = {4, 87, 1, -3, 78};
cout << findLowest(AR);
return 0;
}
int findLowest(int AR[])
{
return lowest;
}
答案 0 :(得分:3)
如果您可以更改函数签名并包含指定常规限制的头文件,则可以执行以下操作,一次性读取数组:
#include <climits>
...
/* assumes AR_size > 0 */
int findLowest(int AR[], int AR_size)
{
int lowest = INT_MAX;
for (i = 0; i < AR_size; ++i) {
lowest = (AR[i] < lowest) ? AR[i] : lowest;
}
return lowest;
}
答案 1 :(得分:3)
template<size_t N>
int findLowest(int (&ar)[N])
{
return *std::min_element(std::begin(ar), std::end(ar));
}
请注意模板的使用,以确保我们从调用者那里获取大小信息。
答案 2 :(得分:0)
#include <iostream>
using namespace std;
int findLowest(int ar[])
{
int lowest = 1000000;
for(int i=0; i<5;i++)
{
if(lowest > ar[i])
lowest = ar[i];
}
return lowest;
}
int main()
{
int AR[5] = {4, 87, 1, -3, 78};
cout << findLowest(AR);
return 0;
}
答案 3 :(得分:0)
为什么不使用标准std::min_element
函数来为您执行此操作,而不是定义自己的函数来查找数组中的最小数字?从数组中创建一个std::vector
对象,让min_element函数为您完成工作。
#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <vector>
#define ARRAY_SIZE 5
int main ( int argc, char **argv )
{
int ar [ ARRAY_SIZE ] = {4, 87, 1, -3, 78};
std::vector<int> arVector ( ar, ar + ARRAY_SIZE );
std::cout << *std::min_element ( arVector.begin ( ), arVector.end ( )) << std::endl;
return EXIT_SUCCESS;
}
输出:
-3
答案 4 :(得分:0)
#include <iostream>
#include <cassert>
using namespace std;
int findLowest(int ar[], const int& SIZE)
{
assert(("Error: the size of the array is zero. Make sure that ", SIZE > 0));
int lowest = ar[0];
for(int i=0; i<SIZE;i++)
{
if(lowest > ar[i])
lowest = ar[i];
}
return lowest;
}
int main()
{
const int SIZE(5);
int AR[5] = {11, 12, 10, 14, 15};
cout << findLowest(AR,SIZE);
return 0;
}