0

即使输入的数量最终是偶数数量的元素,我的代码也会跳过 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();

    }
4

2 回答 2

2

该行将num[num.size()%2]检查元素01根据num. 您的意思是检查 的长度num是偶数还是奇数,即num.size() % 2。所以你的支票变成:

      else if(num.size() % 2 == 0)//even?
于 2013-06-12T02:35:09.087 回答
2

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

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

看看你的向量是否长度均匀。但这不是它所做的——它检查任一处的num[0]num[1]查看它是否为零。

你要:

 num.size() % 2 == 0
于 2013-06-12T02:35:23.767 回答