103 lines
2.0 KiB
C++
103 lines
2.0 KiB
C++
//保存中间计算结果,保存最终计算结果
|
|
#ifndef _RES_REG_H
|
|
#define _RES_REG_H
|
|
#include "Data_Func.h"
|
|
|
|
class res_reg
|
|
{
|
|
public:
|
|
res_reg(int);
|
|
~res_reg();
|
|
int res_add(double *,int);
|
|
int savedat(string,int,sphere_point *);
|
|
int savedat(string,int,point3d *);
|
|
int check(int);
|
|
private:
|
|
double *tempresult;
|
|
};
|
|
|
|
res_reg::res_reg(int M)
|
|
{
|
|
tempresult = new double [M];
|
|
for(int i=0;i<M;i++)
|
|
{
|
|
tempresult[i]=0;
|
|
}
|
|
}
|
|
|
|
res_reg::~res_reg()
|
|
{
|
|
if(tempresult) delete []tempresult;
|
|
}
|
|
|
|
int res_reg::res_add(double *result,int M)
|
|
{
|
|
for(int i=0;i<M;i++)
|
|
{
|
|
tempresult[i]+=*(result+i);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int res_reg::savedat(string filename,int sum,sphere_point *fie)
|
|
{
|
|
ofstream fout;
|
|
string tempname = filename + ".dat";
|
|
const char* savename = tempname.c_str();
|
|
fout.open(savename);
|
|
if(!fout)
|
|
{
|
|
cout<<"can't create "<<savename<<endl;
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
cout<<"saving "<<savename<<"..."<<endl;
|
|
fout<<"Longitude(degree) Latitude(degree) Radius(m) Value"<<endl;
|
|
for(int i=0;i<sum;i++)
|
|
{
|
|
fout<<setprecision(16)<<fie[i].phi<<" "<<fie[i].thet<<" "<<fie[i].radius<<" "<<tempresult[i]<<endl;
|
|
}
|
|
fout.close();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int res_reg::savedat(string filename,int sum,point3d *fie)
|
|
{
|
|
ofstream fout;
|
|
string tempname = filename + ".dat";
|
|
const char* savename = tempname.c_str();
|
|
fout.open(savename);
|
|
if(!fout)
|
|
{
|
|
cout<<"can't create "<<filename<<endl;
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
cout<<"saving "<<filename<<"..."<<endl;
|
|
//fout<<"X(m) Y(m) Z(m) Value"<<endl;
|
|
for(int i=0;i<sum;i++)
|
|
{
|
|
//fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
|
|
fout<<setprecision(16)<<fie[i].x<<" "<<fie[i].y<<" "<<fie[i].z<<" "<<tempresult[i]<<endl;
|
|
}
|
|
fout.close();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int res_reg::check(int sum)
|
|
{
|
|
for(int i=0;i<sum;i++)
|
|
{
|
|
if(tempresult[i]!=tempresult[i])
|
|
{
|
|
cout<<"A non-numeric data is detected."<<endl;
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
#endif |