C++工程中头文件、实现部分和main函数编译时错误!

分三个文件:aversigma.h头文件aversigma.cpp函数实现aversigma_main,cpp主函数//*************************... 分三个文件:
aversigma.h 头文件
aversigma.cpp 函数实现
aversigma_main,cpp 主函数

//**************************************
//头文件声明如下
#ifndef aversigma
#define aversigma
#include <iostream>
#include <vector>
#include <ctime>
#include <cmath>
#include <iomanip>
#endif

using namespace std;
const int N = 20;
void display();
double average(vector<double> a,int n);
double Sigma(vector<double> a,int n);

//*********************************
//实现部分
#include "aversigma.h"
void display()
{
vector<double> a(N);
srand(time(NULL));
cout << "随机生成的数据:" << endl;

for(vector<double>::iterator iter = a.begin(); iter != a.end(); iter++)
{
*iter = (1.0+10.0*rand()/(RAND_MAX+1.0));
}

for(int i = 0; i != a.size(); ++i)
{
if(i % 10 == 0)
cout << endl;
cout << setw(8) << setprecision(4) << a[i] ;
}
}

double average(vector<double> a,int n)
{
double sum = 0;
double ave = 0;

for(vector<double>::iterator iter = a.begin(); iter != a.end(); iter++)
{
sum = sum + *iter;
}
ave=sum/n;

return ave;
}

double Sigma(vector<double> a,int n)
{
double sgm;
double sum = 0;
double aver;

aver = average(a,n);

for(vector<double>::iterator iter = a.begin(); iter != a.end(); iter++)
{
sum = sum + (*iter - aver)*(*iter - aver);
}
sgm = (sqrt(sum))/n;

return sgm;
}

//***************************************************
//主函数

#include"aversigma.h"

int main(void)
{
vector<double> a(N);
double aver;
double sigma;

display();

aver = average(a,N);
cout << "aver = " << aver;
cout << endl;

sigma = Sigma(a,N);
cout << "sigma = " << sigma;
cout << endl;

system("pause");
return 0;
}

功能是用随机函数生成包含20个元素的数据,计算这组数据的平均值和误差!
程序运行后的问题是只能生成数据,不能计算出平均值和误差!不知道哪个地方出错!望高手指正!
展开
 我来答
百度网友8759257
2008-04-24 · TA获得超过760个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:0
展开全部
你的display()函数只是给一个临时的数组赋了随机值,并没有改变主函数定义的那个a,而后边的计算用的还是是全0的a

若做尽量少的修改,建议如下,其他不变:
//aversigma.h 头文件
void display(vector<double> &a);

//aversigma.cpp 函数实现
void display(vector<double> &a)
{
srand(time(NULL));
cout << "随机生成的数据:" << endl;

for(vector<double>::iterator iter = a.begin(); iter != a.end(); iter++)
{
*iter = (1.0+10.0*rand()/(RAND_MAX+1.0));
}

for(int i = 0; i != a.size(); ++i)
{
if(i % 10 == 0)
cout << endl;
cout << setw(8) << setprecision(4) << a[i] ;
}
}

//aversigma_main.cpp 主函数
display(a);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式