C++无法得到中值的正确答案
C++ Unable to get the correct answer for median value
好的,所以我创建了一个接受向量并计算中位数的程序。尽管我得到了奇数的正确中值,但偶数却没有得到相同的值。这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
bool check;
cout<<"Hello World";
vector<double> vec;
vec.push_back(2);
vec.push_back(6);
vec.push_back(8);
vec.push_back(62);
double median;
if(check==vec.size()%2)
{
median=(vec[vec.size() / 2 - 1] + vec[vec.size() / 2]) / 2;
}
else{
median=vec[(vec.size() / 2.0)];
}
cout<<median;
return 0;
}
所以当我在线检查时,正确答案应该是 7 但我得到了 8.. 这只发生在偶数计算时.. 我做错了什么我不明白
我重写了你的代码并清理了一些不必要的变量。我计算了数组大小 n
和中点 centerElement
。您不希望专门在数组非常大的情况下重复执行此计算。
布尔变量check
我也去掉了,完全没必要。您可以通过将模运算的输出与 0
进行比较来简单地比较模运算的输出
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<double> vec;
vec.push_back(2);
vec.push_back(6);
vec.push_back(8);
vec.push_back(100);
auto n = vec.size();
auto centerElement = n/2;
double median;
if(n%2 == 0)
{
median=(vec[centerElement - 1] + vec[centerElement]) / 2;
}
else{
median=vec[(centerElement)];
}
cout<<median;
return 0;
}
好的,所以我创建了一个接受向量并计算中位数的程序。尽管我得到了奇数的正确中值,但偶数却没有得到相同的值。这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
bool check;
cout<<"Hello World";
vector<double> vec;
vec.push_back(2);
vec.push_back(6);
vec.push_back(8);
vec.push_back(62);
double median;
if(check==vec.size()%2)
{
median=(vec[vec.size() / 2 - 1] + vec[vec.size() / 2]) / 2;
}
else{
median=vec[(vec.size() / 2.0)];
}
cout<<median;
return 0;
}
所以当我在线检查时,正确答案应该是 7 但我得到了 8.. 这只发生在偶数计算时.. 我做错了什么我不明白
我重写了你的代码并清理了一些不必要的变量。我计算了数组大小 n
和中点 centerElement
。您不希望专门在数组非常大的情况下重复执行此计算。
布尔变量check
我也去掉了,完全没必要。您可以通过将模运算的输出与 0
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<double> vec;
vec.push_back(2);
vec.push_back(6);
vec.push_back(8);
vec.push_back(100);
auto n = vec.size();
auto centerElement = n/2;
double median;
if(n%2 == 0)
{
median=(vec[centerElement - 1] + vec[centerElement]) / 2;
}
else{
median=vec[(centerElement)];
}
cout<<median;
return 0;
}