主题:紧急!!!!请教大家,回帖就得分
float a[26][0],m,n,c,b,lw,e,ey,tk,tox,f,l1,l2,x,r,ac,q,ki,kj,km,kic,jic,u,t,v;
const double pi=3.14;
double a1,a2,a3;
int i,j,y,k,d,z;
y=1;
t=0;
k=0;
[color=FF00FF]b=StrToFloat(Edit1->Text);
lw=StrToFloat(Edit2->Text);
tk=StrToFloat(Edit3->Text);
tox=StrToFloat(Edit4->Text);
v=StrToFloat(Edit5->Text);
x=StrToFloat(Edit6->Text);
u=StrToFloat(Edit7->Text);[/color]
[color=0000FF]FILE *stream1=fopen("c.txt","r");
{
for(i=0;i<=24;i++)
{
fscanf(stream1,"%f\n",&a[i][0]);
}
for(j=1;j<=24;j++)
{
m=a[0][0];
if(m<a[j][0]) m=a[j][0];
}
for(j=1;j<=24;j++)
{
if(a[j][0]>=0)
{
a[k][0]=a[j][0];k++;
}
n=a[0][0];
for(d=0;d<k;d++)
{
if(n>a[d][0]) n=a[d][0];
}
}
fclose(stream1);
}[/color]
while(y)
{
f=145-b;
if(f>110) jic=95.7-34.4*(f-110)/35;
else jic=163.5-67.8*(f-90)/20;
z=jic*v/(1-u*u);
[color=FF0000]kic=sqrt(z);
ki=2.11*m*sqrt(pi*b)/pi;
kj=2.11*n*sqrt(pi*b)/pi;[/color]
a1=0.35*log10(tk)+0.65*log10(lw)-2.07;
a2=0.47*log10(tox)+0.53*log10(lw)-3.77;
e=(ki/x)*(ki/x);
ey=(1-u)*(1-u);
r=e*ey/(2*pi);
ac=0.2539*jic*v/(m*m-m*m*u*u)-r;
if(ki<0.6*kic)
{
km=ki-kj;
a3=1.95*log10(km)+log10(lw)-8.6;
q=pow(10,a1)+pow(10,a2)+pow(10,a3);
b+=q;
t++;
}
if(b>ac) break;
}
Edit8->Text=FloatToStr(b);
Edit9->Text=FloatToStr(t);
说明:粉红色语句是从外界读入数据,兰色是求一个数组里面26个数的最大值和正的最小值,红色的语句是有问题的语句,我要是把Z定义没int型,则提示是sqrt:DOMAIN error如我把z定义为float型,则提示是floating point overflow .Process stopped.下面的sqrt(pi*b)也存在这样的问题.哪个能告诉我该怎么改进?
谢谢!
const double pi=3.14;
double a1,a2,a3;
int i,j,y,k,d,z;
y=1;
t=0;
k=0;
[color=FF00FF]b=StrToFloat(Edit1->Text);
lw=StrToFloat(Edit2->Text);
tk=StrToFloat(Edit3->Text);
tox=StrToFloat(Edit4->Text);
v=StrToFloat(Edit5->Text);
x=StrToFloat(Edit6->Text);
u=StrToFloat(Edit7->Text);[/color]
[color=0000FF]FILE *stream1=fopen("c.txt","r");
{
for(i=0;i<=24;i++)
{
fscanf(stream1,"%f\n",&a[i][0]);
}
for(j=1;j<=24;j++)
{
m=a[0][0];
if(m<a[j][0]) m=a[j][0];
}
for(j=1;j<=24;j++)
{
if(a[j][0]>=0)
{
a[k][0]=a[j][0];k++;
}
n=a[0][0];
for(d=0;d<k;d++)
{
if(n>a[d][0]) n=a[d][0];
}
}
fclose(stream1);
}[/color]
while(y)
{
f=145-b;
if(f>110) jic=95.7-34.4*(f-110)/35;
else jic=163.5-67.8*(f-90)/20;
z=jic*v/(1-u*u);
[color=FF0000]kic=sqrt(z);
ki=2.11*m*sqrt(pi*b)/pi;
kj=2.11*n*sqrt(pi*b)/pi;[/color]
a1=0.35*log10(tk)+0.65*log10(lw)-2.07;
a2=0.47*log10(tox)+0.53*log10(lw)-3.77;
e=(ki/x)*(ki/x);
ey=(1-u)*(1-u);
r=e*ey/(2*pi);
ac=0.2539*jic*v/(m*m-m*m*u*u)-r;
if(ki<0.6*kic)
{
km=ki-kj;
a3=1.95*log10(km)+log10(lw)-8.6;
q=pow(10,a1)+pow(10,a2)+pow(10,a3);
b+=q;
t++;
}
if(b>ac) break;
}
Edit8->Text=FloatToStr(b);
Edit9->Text=FloatToStr(t);
说明:粉红色语句是从外界读入数据,兰色是求一个数组里面26个数的最大值和正的最小值,红色的语句是有问题的语句,我要是把Z定义没int型,则提示是sqrt:DOMAIN error如我把z定义为float型,则提示是floating point overflow .Process stopped.下面的sqrt(pi*b)也存在这样的问题.哪个能告诉我该怎么改进?
谢谢!