请大家帮我看看,怎么可以把数据读出来
#include<iostream>
#include<fstream>
#include<string>
#include<math.h>
#include<stdio.h>
#include<malloc.h>
using namespace std;
struct Line
{int Num;
int NumI;
int NumJ;
int Type;
float R;
float X;
float B;
float K;
};
struct Bus
{int Num;
int Type;
float Volt;
float Phase;
float GenP;
float GenQ;
float LoadP;
float LoadQ;
};
struct Shunt
{int Num;
int NumI;
float G;
float B;
};
int MakeY(int nB,int nL,Line *sL,double **YG,double **YB );
int main()
{
float sBase=100.0;
int nB,nL,nSH;
char filename[64];
cout<<"please input the data file name:"<<endl;
cin>>"%s">>filename;
if(strcmp(filename,"0")==0)
{
strcpy(filename,"in.txt");
}
ifstream fin;
fin.open(filename);
char buffer[128];
fin.getline(buffer,128);
fin>>nB>>nL>>nSH;
double **YG,**YB;
YG=(double**)new char[(nB)*sizeof(void*)];
for(int i=0;i<nB;i++)
{
YG[i]=new double[nB];
memset(YG[i],0,sizeof(double)*(nB));
}
YB=(double**)new char[(nB)*sizeof(void*)];
for(i=0;i<nB;i++)
{
YB[i]=new double[nB];
memset(YB[i],0,sizeof(double)*(nB));
}
Line *line;
line=new Line[nB];
Bus *bus;
bus=new Bus[nB];
Shunt *shunt;
shunt=new Shunt[nSH];
fin.getline(buffer,128);
fin.getline(buffer,128);
int npv=0,npq=0;
for(i=0;i<nB;i++)
{
fin>>bus[i].Num>>bus[i].Type>>bus[i].Volt>>bus[i].Phase>>bus[i].LoadP>>bus[i].LoadQ>>bus[i].GenP>>bus[i].GenQ;
bus[i].LoadP/=sBase;
bus[i].LoadQ/=sBase;
bus[i].GenP/=sBase;
bus[i].GenQ/=sBase;
bus[i].Phase=bus[i].Phase*3.141592/180;
bus[i].Num-=1;
if(bus[i].Type==2)
npv++;
if(bus[i].Type==1)
npq++;
}
fin.getline(buffer,128);
fin.getline(buffer,128);
for(i=0;i<nL;i++)
{
fin>>line[i].Num>>line[i].NumI>>line[i].NumJ>>line[i].Type>>line[i].R>>line[i].X>>line[i].B>>line[i].K;
line[i].NumI--;
line[i].NumJ--;
}
fin.getline(buffer,128);
fin.getline(buffer,128);
for(i=0;i<nSH;i++)
{
}
fin.close();
MakeY(nB,nL,line,YG,YB);
}
int MakeY(int nB,int nL,Line *sL,double **YG,double **YB )
{
int i,j,l;
float r,x,d1,g,b,t;
for(i=0;i<nB;i++)
for(j=0;j<nB;j++)
{
YG[i][j]=0.0;
YB[i][j]=0.0;
};
for(i=0;i<nL;i++)
{
int start,end;
float r,x,b,k,g,b1;
start=sL[i].NumI;
end=sL[i].NumJ;
r=sL[i].R;
x=sL[i].X;
b=sL[i].B;
k=sL[i].K;
g=r/(r*r+x*x);
b1=-x/(r*r+x*x);
if(sL[i].Type==2)
{
YG[start][end]=-1*g/k;
YG[end][start]=-1*g/k;
YB[start][end]=-1*b1/k;
YB[end][start]=-1*b1/k;
YG[start][start]+=g/k/k;
YG[end][end]+=g;
YB[start][start]+=0.5*b+b1/k/k;
YB[end][end]+=0.5*b+b1;
continue;
}
if(sL[i].Type==1)
{
YG[start][end]=-1*g;
YG[end][start]=-1*g;
YB[start][end]=-1*b1;
YB[end][start]=-1*b1;
YG[start][start]+=g;
YG[end][end]+=g;
YB[start][start]+=0.5*b+b1;
YB[end][end]+=0.5*b+b1;
continue;
}
printf("Error Input !\n");
return 0;
}
/* Check the Y matrix */
ofstream fout("out.txt");
fout << "--------------Y Matrix--------------------" << endl;
for(i=0;i<nB;i++)
{
for(j=0;j<nB;j++)
fout << YG[i][j] << "+j" << YB[i][j] << "\t";
fout << endl;
}
fout.close();
return 1;
}
47 8 1 0.0085 0.072 0.149 0
59 8 1 0.0119 0.1008 0.209 0
67 5 1 0.032 0.161 0.306 0
79 6 1 0.039 0.17 0.358 0
85 4 1 0.01 0.085 0.176 0
96 4 1 0.017 0.092 0.158 0
SHUNT DATA FOLLOWS 0 ITEMS
请问怎么读出数据
[解决办法]
cin>>"%s">>filename;我还没看到过这样的语法,看不下去
[解决办法]
一个注释都没有,这么长的代码完全不知道是干嘛的,可读性太差
[解决办法]