求大佬帮忙解决!
  • 板块学术版
  • 楼主Yuki_yange
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/3/26 10:00
  • 上次更新2023/10/23 20:27:37
查看原帖
求大佬帮忙解决!
535305
Yuki_yange楼主2023/3/26 10:00

初二下刚学数据处理,编了一个求平均数、中位数、众数和方差的代码,其中众数和方差部分好像有问题,求大佬指点!!! (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;
}
2023/3/26 10:00
加载中...