新手求助,程序运行不了,大家帮忙给改改吧!急!!!
这个是我的一份作业,输入两个长度相等的数组,字符串数组是姓名,另一组是销售额。老师讲的思路是要先分别把两个数组复制,然后再处理复制的两个数组,首先要把字符串数组的重复项删掉然后按字母顺序排序,然后根据姓名检测每一个人的销售额,每个人的销售额产生一个新数组,然后求每个人的销售额的平均数,方差及中位数。下面是我写的代码,请高手们帮我改改,尽量按照我说的这个思路来改,谢谢!#include <stdio.h>
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <stdlib.h>
#include<algorithm>
using namespace std;
double mean(vector<double>v)
{
double sum=0.0;
for(int i=0;i<v.size();i++)
{
sum=sum+v[i];
}
return (sum/v.size());
}
double var(vector<double>v)
{
double sum2=0.0;
for (int i=0;i<v.size();i++)
{
sum2=sum2+(v[i]-mean(v))*(v[i]-mean(v));
}
return (sum2/v.size());
}
double median(vector<double>v)
{
int n = v.size();
if(n%2==0)
{
return (v[n/2-1]+v[n/2])/2;
}
else
{
return (v[(n-1)/2]);
}
}
int main ()
{
cout. setf ( ios :: fixed );
cout. precision (2);
int n;
string name;
char tecla;
cin>>n;
vector<string> x(n),x1;
vector<double> y(n),y1;
for (int i=0;i<n;i++)
{
cin>>x[i];
cin>>y[i];
}
for (int i=0;i<x.size();i++)
{
x1[i]=x[i];
y1[i]=y[i];
}
sort(x1.begin(),x1.end()); //姓名排序
for(int i=0;i<x1.size()-1;i++) // 删除X1数组中的重复项,这个部分输出有点问题 ,还是会出现个别重复项
{
if(x1[i]==x1[i+1])
{
n--;
for (int j=i+1;j<n;j++)
{
x1[j]=x1[j+1];
}
x1.erase(x1.end()-1);
}
}
cout<<"*******"<<endl;
int pos=0,i=0;
while(i!=x1.size())
{
name=x1[i];
while (pos!=x1.size()&& x[pos]==name) // 找出相同名字的位置
{
y1.push_back(y[pos]); // 把每一个名字重复后产生的数据组成一个新的数组
pos++;
}
sort(y1.begin(),y1.end());
double m=mean(y1);
double v=var(y1);
double med=median(y1);
cout<<x1[i]<<m<<" "<<v<<" "<<med<<endl; //循环输出每个不同名字的平均数等计算结果
i++;
}
cin>>tecla;
return 0;
}