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

来源:百度知道 编辑:UC知道 时间:2024/06/21 17:46:16
分三个文件:
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)
{

你的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);