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

标签 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();

    }

最佳答案

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

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

查看您的 vector 是否为偶数长度。但这不是它的作用 - 它检查 num[0]num[1] 处的 value 以查看它是否为零。

你想要:

 num.size() % 2 == 0

关于c++ - 尝试在我的代码中找到中位数,如果检查似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056811/

相关文章:

c++ - 通过 ENUM 查找返回元组值(不同类型)的模板函数

c++ - 错误 : definition of implicitly declared copy constructor

c++ - 是否可以将 gcc 的链接器与 dlopen 结合使用?

c++ - 当模板参数为零时防止模板实例化

c++ - 为什么我会收到此错误消息 : "undefined reference to ` PerformChat(char*, char*, char*, char*, char* )'"

c++ - Qt 中的事件队列

c++ - 具有虚拟赋值运算符的多态性

c++ - 如何在不可见模式下运行 qt c++ 控制台应用程序?

c++ - Borland C++ Builder 6 调整输出可执行文件的大小以适应屏幕

c++ - 从 Objective C 调用 C++