初二下刚学数据处理,编了一个求平均数、中位数、众数和方差的代码,其中众数和方差部分好像有问题,求大佬指点!!! (QAQ)
#include <bits/stdc++.h>//平均数、中位数、众数和方差
using namespace std;
int main()
{
while(1)
{
int t[10000],a[10000];
cout<<"输入数据个数(个数不超过10000):";
float sum=0;
int n;
cin>>n;
cout<<endl<<"输入数据(数据大小不超过10000):";
for(int i=1;i<=n;i++)
{
cin>>a[i];
t[a[i]]++;
sum+=a[i];
}
float x=sum/n;
cout<<endl<<"平均数:"<<x<<endl;
sort(a+1,a+n+1);
if(n%2==1)
cout<<"中位数:"<<a[(n+1)/2]<<endl;
else
{
float y=(a[n/2]+a[n/2+1])/2.0000000;
cout<<"中位数:"<<y<<endl;
}
int maxn=t[1];
for(int i=1;i<=10000;i++)
maxn=max(maxn,t[i]);
cout<<"众数:";
for(int i=1;i<=10000;i++)
if(t[i]==maxn)
cout<<i<<" ";
cout<<endl;
float cnt=0;
for(int i=1;i<=n;i++)
{
if(x>i)
cnt+=(x-i)*(x-i)*t[i];
else
cnt+=(i-x)*(i-x)*t[i];
}
float s=cnt/n;
cout<<"方差:"<<s<<endl;
cout<<"结束程序请输入return"<<endl;
cout<<"程序继续请输入continue"<<endl;
string s0;
cin>>s0;
if(s0=="return")
return 0;
continue;
}
return 0;
}