一个简单的c++程序调试

来源:百度知道 编辑:UC知道 时间:2024/06/07 11:08:38
#include "iostream.h"
#include "math.h"
#define g 9.81
int main()
{
double D=0.6,N=4,L=800;
int Ts=20,Tmax=500; /* 关闭时间,计算的最长时间*/
double H0=75.0,Q=0.2,f=0.022, c=1000; /* 作用水头,最大流量,
沿程水头损失系数,水击速度*/
double V0=Q/(0.7854*D*D); /* 管道中最大流速*/
double T=L/(N*c); /* 时间步长*/
double M=Tmax/T; /* 时段数*/
double H[100][100];
double V[100][100];
int j;
for (j=0;j<=N;j++) /*初始时刻各断面的水头和流速*/
{ H[0][j]=H0-j*(f*L/(2*g*D*N))*V0*V0;
V[0][j]=V0;
}
int i;
for (i=1;i<=M;i++) /*中间时刻第一断面上的水头和流速*/
{ H[i][0]=H0;
V[i][0]=(g/c)*(H0-H[i][1])+V[i][1]-((f*V[i][1]*fabs(V[i][1]))/(2*c*D))*(L/N-V[i][1]*T);
for (j=1;j<N;j++) /*中间时刻中间断面节点上的水头和流速*/
{ H[i][j]=0.5*(H[i][j-1]+H[i][j+1]+(c/g)*

知道错误在哪,不过暂时没法帮你改

问题出在 M 上

double M=Tmax/T = 500/(800/(4*1000)) = 2500;
然后下面
for (i=1;i<=M;i++) /*中间时刻第一断面上的水头和流速*/
{ H[i][0]=H0;………………
}

可是你的H[100][100]没有到2500
还有 最好把 M 和 N 改成 int型的

问题很多啊,多努力吧!