试图在我的代码中找到中位数,如果检查似乎不起作用?

时间:2013-06-12 02:31:51

标签: c++

即使输入的金额最终成为偶数元素,我的代码也会跳过if检查。在我正在阅读的章节中,这可能是我错过或没有注意到的傻事。谢谢你看看它。

#include "std_lib_facilities.h"

    using namespace std;

    int main()
    {
        vector<double> num;
        double numb;

        while(cin>>numb)
            num.push_back(numb);

        sort(num.begin(), num.end());

        if(num.size() <= 2)
            cout << "Need more data." << endl;
        else if (num[num.size()%2] == 0)//even?
        {
            cout << "Median is: " << num[num.size()/2] << endl;
            cout << "Median is: " << num[(num.size()/2)+1] << endl;
        }
        else
            cout << "Median is: " << num[num.size()/2] << endl;

        keep_window_open();

    }

2 个答案:

答案 0 :(得分:2)

num[num.size()%2]行会检查元素01,具体取决于num的大小。你的意思是检查num的长度是偶数还是奇数,即num.size() % 2。所以你的支票变为:

      else if(num.size() % 2 == 0)//even?

答案 1 :(得分:2)

我认为您正在尝试使用此测试:

num[num.size()%2] == 0

查看矢量是否长度均匀。但这不是它的作用 - 它检查num[0]num[1],看它是否为零。

你想:

 num.size() % 2 == 0