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个元素的数据,计算这组数据的平均值和误差!
程序运行后的问题是只能生成数据,不能计算出平均值和误差!不知道哪个地方出错!望高手指正! 展开
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个元素的数据,计算这组数据的平均值和误差!
程序运行后的问题是只能生成数据,不能计算出平均值和误差!不知道哪个地方出错!望高手指正! 展开
1个回答
展开全部
你的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);
若做尽量少的修改,建议如下,其他不变:
//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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询