读书人

请大家帮小弟我看看如何可以把数据读

发布时间: 2013-03-26 09:54:34 作者: rapoo

请大家帮我看看,怎么可以把数据读出来
#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;
}




数据为
BUSnum Branchnum Shuntnum
9 9 0
BUS DATA FOLLOWS 9 ITEMS
1 3 1.04 0. 0. 0. 71.641 27.04592
2 2 1.025 0. 0. 0. 163. 6.65366
3 2 1.025 0. 0. 0. 85. -10.8597
4 1 1. 0. 0. 0. 0. 0.
5 1 1. 0. 125. 50. 0. 0.
6 1 1. 0. 90. 30. 0. 0.
7 1 1. 0. 0. 0. 0. 0.
8 1 1. 0. 100. 35. 0. 0.
9 1 1. 0. 0. 0. 0. 0.
BRANCH DATA FOLLOWS 9 ITEMS
14 1 2 0. 0.0576 0. 1.
27 2 2 0. 0.0625 0. 1.
39 3 2 0. 0.0586 0. 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;我还没看到过这样的语法,看不下去
[解决办法]
一个注释都没有,这么长的代码完全不知道是干嘛的,可读性太差
[解决办法]

引用:
引用:
cin>>"%s">>filename;我还没看到过这样的语法,看不下去
我刚刚学习c++,这是参照别人的程序,还请你帮帮忙

不好意思,我再补充两句:
调试能力是每个写程序的人必须具备的最基本的能力
你可以在网上找找调试的一些基本知识
把“调试”这把刀磨好了
你以后才能在程序里享受更多的乐趣。
再次祝福你!
[解决办法]
看懂了么?
cin>>"%s">>filename;
参照?
感觉LZ胆子很大。

正经看书去。

[解决办法]
不好看懂,没办法了,楼主还是自己跟踪吧!

读书人网 >C++

热点推荐