0

私はこのプログラムの完成にとても近づいています。5 つの値の配列の中央値を見つけます。最後にもう 1 つ、なかなか消えないエラーがあります。私は C++ を初めて使用するので、何が問題なのかわかりません。こことGoogleで何度もエラーを調査しました。運がない。

コードは次のとおりです。

#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 に答える