首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-03-26 
请大家帮我看看,怎么可以把数据读出来#includeiostream#includefstream#includestring#includemath

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

正经看书去。

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

热点排行