0

我非常接近完成这个程序。它将找到一个包含 5 个值的数组的中位数。我有最后一个错误,我似乎无法摆脱。由于我是 C++ 新手,所以我不知道问题可能是什么。我在这里和谷歌上一遍又一遍地研究错误;没运气。

这是代码:

#include <algorithm>
#include <functional>
#include <array>
#include <iostream>
using namespace std; 

int main()
{ 
    int integer1, integer2, integer3, integer4, integer5;

//Input of integers
std::cout << "Enter the first integer: "; 
std::cin >> integer1; 
std::cout << "Enter the second integer: "; 
std::cin >> integer2; 
std::cout << "Enter the third integer: "; 
std::cin >> integer3; 
std::cout << "Enter the fourth integer:";
std::cin >> integer4;
std::cout << "Enter the fifth integer:";
std::cin >> integer5;

std::array <int,5> a = {integer1, integer2, integer3, integer4, integer5}; 

//Sort array
std::sort(a.begin(), a.end());
for (int a : a) {
        std::cout << a << " ";
}

std::nth_element(a.begin(), a.begin()+1, a.size()/2, a.end());
std::cout <<"The median of the integers "<<integer1<<", "<<integer2<<", "<<integer3<<", "<<integer4<<", and "<<integer5<< " is " <<a[a.size()/2]<< '\n';
std::endl (std::cout);



return 0; 
}

错误状态:“IntelliSense:没有重载函数“std::nth_element”的实例与参数列表匹配,参数类型为:(std::_Array_iterator, std::_Array_iterator, unsigned int, std::_Array_iterator)

帮我完成这件事!提前致谢。

4

2 回答 2

1

您误解了nth_element它的作用,并试图错误地使用它。

此函数采用不一定排序的范围,并对其进行部分排序,以使第 n 个元素位于正确的位置。如果你用这个函数找到一个中位数,你不需要先sorf。

如果您已经有一个排序范围[first, last),则该范围的第 n 个元素由 指向first + n

于 2014-03-13T04:25:16.337 回答
0

我想你的意思是:

std::nth_element(a.begin(), a.begin()+a.size()/2, a.end()); 

请参阅c++ 参考

于 2014-03-13T04:14:12.767 回答