即使输入的金额最终成为偶数元素,我的代码也会跳过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();
}
答案 0 :(得分:2)
num[num.size()%2]
行会检查元素0
或1
,具体取决于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