📄 inputdata.cpp
字号:
#include "InputData.h"
#include <cstdlib>
CInput::CInput(char* InFileName,int n,int m)
{
InFile.open(InFileName);
if(InFile.is_open()==0){
cerr<<"Can't open the file--InputData.dat";
exit(1);
}
this->n=n;
this->m=m;
Data_a=new double[n];
Data_b=new double[n];
Data_c=new double[n];
Data_d=new double[n];
Data_e=new double[m];
InputData=new double[4*n+m];
InputDataMax=-1000;
InputDataMin=1000;
}
CInput::~CInput()
{
delete Data_a;
delete Data_b;
delete Data_c;
delete Data_d;
delete Data_e;
delete InputData;
InFile.close();
}
//输入数据的归一化
void CInput::Initialize()
{
int i=0,j;
//从文件中读入初始化数据
while(!InFile.eof()&&i<(4*n+m))
InFile>>InputData[i++];
//寻找最值
for(j=0;j<i;j++){
if(InputDataMin>InputData[j]) InputDataMin=InputData[j];
if(InputDataMax<InputData[j]) InputDataMax=InputData[j];
}
//整体归一化
for(j=0;j<i;j++)
InputData[j]=(InputData[j]-InputDataMin)/(InputDataMax-InputDataMin);
//数据对应赋予各自节点
for(j=0;j<i;j++){
if(j<9) Data_a[j]=InputData[j];
else if(j<18) Data_b[j-9]=InputData[j];
else if(j<27) Data_c[j-18]=InputData[j];
else if(j<36) Data_d[j-27]=InputData[j];
else Data_e[j-36]=InputData[j];
}
}
//反归一
//从InFile中读入数据,反归一化后存入文件OutFile中
void CInput::DeInitialize(char* InFileName,char* OutFileName)
{
ifstream InFile(InFileName);
ofstream OutFile(OutFileName);
int i=0;
double temp;
while(!InFile.eof()){
InFile>>temp;
temp=(InputDataMax-InputDataMin)*temp+InputDataMin;
OutFile<<temp<<"\t\t";
if(++i%5==0) OutFile<<endl;
}
InFile.close();
OutFile.close();
}
//由已知数据组合生成测试数据 并送入OutFile文件和数组TestData中
void CInput::BuildData(char* TestFileName)
{
ofstream TestFile(TestFileName);
int i=0;
for(int i0=0;i0<n;i0++){
for(int i1=0;i1<n;i1++){
for(int i2=0;i2<n;i2++){
for(int i3=0;i3<n;i3++){
for(int i4=0;i4<m;i4++){
TestFile<<Data_a[i0]<<" ";
TestFile<<Data_b[i1]<<" ";
TestFile<<Data_c[i2]<<" ";
TestFile<<Data_d[i3]<<" ";
TestFile<<Data_e[i4]<<"\n";
i++;
}
}
}
}
}
TestFile.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -