我正在尝试编写第二个函数来计算主函数中的整数向量。我的矢量设置如下。
int inputinfo;
cout << "\nPlease enter in scores: ";
cout << "\nEnd your input with ctrl-z\n";
vector<int> scores;
while (cin >> inputinfo)
{
scores.push_back(inputinfo);
}
这是我的中位数等式(我不确定它是否正常)。我想为中位数做一个函数,然后将其调回主函数以找到向量的中位数。
double median;
size_t size = scores.size();
sort(scores.begin(), scores.end());
if (size % TWO == 0)
{
median = (scores[size / 2 - 1] + scores[size / 2]) / 2;
}
else
{
median = scores[size / 2];
}
感谢您的帮助。
答案 0 :(得分:2)
如果向量中没有或只有一个数字,请检查代码是否失败。您可以使用
解决此问题if (size==0) throw "Vector empty";
if (size==1) return scores[0];
在if(size%TWO == 0)行之前。
答案 1 :(得分:0)
只是简短的回顾:中位是指排序列表中的中间条目,对吧? 所以你搜索
//your array has a even size, so you want the middle of it
if (size % TWO == 0)
{
median = scores[size / 2 - 1];
}
// your array has a odd size, so you average
else
{
median = (scores[size / 2 - 1] + scores[size / 2]) / 2;
}