📄 subject_53725.htm
字号:
<p>
序号:53725 发表者:小抱枕 发表日期:2003-09-22 15:33:43
<br>主题:这段程序总是出现无穷大导致死循环不知哪位能帮我找找原因
<br>内容:#include <stdio.h><BR>#include <math.h><BR>#include <iostream.h><BR>#include <fstream.h><BR><BR>double BETA,E3M;<BR>double FXM,M2E,M2F,N1,N2E,N2F;<BR>double Q10,Q20,Q11,Q12,Q21,Q22,S;<BR>double KX[3000],KY[3000];<BR>double pi = 3.1415926535;<BR><BR>double E0=-0.002;<BR>double S0=25;<BR>double EU=-0.004;<BR>double K1=0.85;<BR>double SY=400;<BR>double ES=2.0e5; //材料参数<BR><BR>double H=520,B=520; //截面尺寸<BR>double AS=707,AS1=707; //钢筋截面积<BR><BR>double N=-1e6; //轴力N<BR>double C=pi/4; //N荷载角<BR>int T=1000;<BR>double MXI[3000],MYI[3000];<BR>double E=0,E3=0,FX=0,FY=0;<BR><BR>double DE=-0.00005,DF=0.0005;<BR><BR>double TA=tan(C),TB;<BR><BR>double A1;<BR>double X,Y;<BR>int TI=13,TJ=13; //截面网格条带数<BR>double NUM[13][13];<BR><BR>double MX=0,MY=0,N0=0;<BR><BR><BR><BR><BR><BR><BR>void CIF();<BR>void main()<BR>{<BR><BR>fstream outfile;<BR>outfile.open("11.dat",ios::out);<BR>for(int I=1;I<=T&&E>-0.008&&E<0.02;I++)<BR>{<BR> FY=FY+DF;<BR>loop: CIF();<BR> N1=N0;TB=MY/MX;<BR> if(fabs(N-N1)<=1000000&&fabs(TA-TB)<=0.01)<BR> {<BR> MYI[I]=MY;<BR> MXI[I]=MX;<BR> KY[I]=FY/H;<BR> KX[I]=FX/B;<BR> BETA=atan(KX[I]/KY[I]);<BR><BR> outfile<<KX[I]<<"\n";<BR> outfile<<MXI[I]<<"\n";<BR> }<BR>else<BR> E3=E3+DE;<BR> CIF();<BR> N2E=N0;M2E=MY/MX;<BR> FX=FX+DF;E3=E3-DE;<BR> CIF();<BR> N2F=N0;M2F=MY/MX;<BR> Q10=-(N1-N);Q20=TA-M2F;<BR> Q11=(N2E-N1)/DE;Q12=(N2F-N1)/DE;<BR> Q21=(M2E-TB)/DF;Q22=(M2F-TB)/DF;<BR> FXM=(Q10/Q11-Q20/Q21)/(Q12/Q11-Q22/Q21);<BR> E3M=(Q10/Q12-Q20/Q22)/(Q11/Q12-Q21/Q22);<BR> FX=FX-DF+FXM;<BR> E3=E3-DE+E3M;<BR> goto loop;<BR><BR>}<BR>outfile.close();<BR>}<BR><BR><BR><BR><BR>void CIF() //计算内力<BR>{<BR><BR><BR>for(int P=0;P<=12;P++)<BR>{<BR>for(int Q=0;Q<=12;Q++)<BR>NUM[P][Q]=1;<BR>}<BR>for(int K=2;K<=10;K+=2)<BR>{<BR> NUM[2][K]=2;<BR> NUM[10][K]=2;<BR>}<BR>for(K=4;K<=8;K+=2)<BR>{<BR> NUM[K][2]=2;<BR> NUM[K][10]=2;<BR>} //网格编号<BR><BR>for(int I=0;I<TI;I++)<BR>for(int J=0;J<TJ;J++)<BR> { Y=0.5*H-H*(I+1)/TI+0.5*H/TI;<BR> X=0.5*B-B*(J+1)/TJ+0.5*B/TJ;<BR> E=E3-Y*FY/H-X*FX/B;<BR> if(NUM[I][J]=1)<BR> { <BR> if(E>0.00015) S=0;<BR> else if(E>0.0001) S=0.5*K1*pow(S0,0.67);<BR> else if(E>0) S=0.5*K1*pow(S0,0.67)*(2*E/(E+0.0001));<BR><BR> else if(E>E0) S=-2*K1*S0*E/(E0+E);<BR> else if(E>EU) S=-K1*S0*(1-pow(200*(E-E0),2));<BR> else S=-0.3*K1*S0;<BR> A1=B*H/(TI*TJ);<BR> }<BR> else if(NUM[I][J]=2)<BR> {<BR> if(fabs(E)<=SY/ES) S=E*ES;<BR> else if(E>0) S=S0;<BR> else S=-S0;<BR> A1=E>0?AS:AS1;<BR> }<BR> N0=N0+S*A1;<BR> MX=MX+S*A1*Y;<BR> MY=MY+S*A1*X;<BR> <BR> }<BR>}<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:风之文章 回复日期:2003-09-22 16:34:25
<br>内容:这断程序都能耗干资源 <BR>void main()<BR>{<BR><BR> int y;<BR> for(int i=0;i<10;i++)<BR> {<BR> loop:<BR> y=0;<BR> if(i%2==0)<BR> ;<BR> else<BR> goto loop;<BR> }<BR>}<BR>是你的goto 语句有问题!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小抱枕 回复日期:2003-09-22 19:44:53
<br>内容:改成下面还是不行啊求助!!!<BR>for(int I=1;I<=T&&E>-0.008&&E<0.02;I++)<BR>{<BR> FY=FY+DF;<BR> CIF();<BR> N1=N0;TB=MY/MX;<BR> while(fabs(N-N1)>100000||fabs(TA-TB)>0.01)<BR> <BR> {<BR> E3=E3+DE;<BR> CIF();<BR> N2E=N0;M2E=MY/MX;<BR> FX=FX+DF;E3=E3-DE;<BR> CIF();<BR> N2F=N0;M2F=MY/MX;<BR> Q10=-(N1-N);Q20=TA-M2F;<BR> Q11=(N2E-N1)/DE;Q12=(N2F-N1)/DE;<BR> Q21=(M2E-TB)/DF;Q22=(M2F-TB)/DF;<BR> FXM=(Q10/Q11-Q20/Q21)/(Q12/Q11-Q22/Q21);<BR> E3M=(Q10/Q12-Q20/Q22)/(Q11/Q12-Q21/Q22);<BR> FX=FX-DF+FXM;<BR> E3=E3-DE+E3M;<BR> CIF();<BR> N1=N0;TB=MY/MX;<BR> }<BR> <BR> <BR> MYI[I]=MY;<BR> MXI[I]=MX;<BR> KY[I]=FY/H;<BR> KX[I]=FX/B;<BR> BETA=atan(KX[I]/KY[I]);<BR><BR> outfile<<KX[I]<<"\n";<BR> outfile<<MXI[I]<<"\n";<BR> <BR>}<BR>outfile.close();<BR>}<BR>2003-9-22 19:55:34
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -