声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2084|回复: 4

[C/C++] 谁帮我看看这个算法错在哪了,谢谢

[复制链接]
发表于 2007-6-12 20:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. #include <math.h>
  2. #include <iostream.h>
  3. #include<fstream.h>
  4. #include"iomanip.h"

  5. int loc[200][4],e;
  6. float a,b,g[12][12],h,anu;
  7. MATD()
  8. { int i,j,l,s,p,m;
  9. float afh1[4],afh2[4],fh1,fh2,d,n,k1[3][3],ab;

  10. afh1[0]=-1;afh1[1]=1;afh1[2]=1;afh1[3]=-1;
  11. afh2[0]=-1;afh2[1]=-1;afh2[2]=1;afh2[3]=1;
  12. d=e*h*h*h/(12*(1-anu*anu));
  13. n=d/(60*a*b);
  14. ab=b*b/(a*a);

  15. for(i=0;i<4;i++)
  16. for(j=0;j<4;j++)
  17. {fh1=afh1[i]*afh1[j];
  18. fh2=afh2[i]*afh2[j];
  19. k1[0][0]=3*n*(15.0*(ab*fh1+fh2/ab)+(14-4*anu+5*ab+5.0/ab)*fh1*fh2);
  20. k1[0][1]=-3*n*b*((2+3*anu+5.0/ab)*fh1*afh2[i]+15*afh2[i]/ab+5*anu*fh1*afh2[j]);
  21. k1[0][2]=3*n*a*((2+3*anu+5*ab)*fh2*afh1[i]+15*afh1[i]*ab+5.0*anu*fh2*afh1[j]);
  22. k1[1][0]=-3*n*b*((2+3*anu+5.0/ab)*fh1*afh2[j]+15*afh2[j]/ab+5*anu*fh1*afh2[i]);
  23. k1[1][1]=n*b*b*(2*(1-anu)*fh1*(3+5*fh2)+5*(3+fh1)*(3+fh2)/ab);
  24. k1[1][2]=-15*n*anu*a*b*(afh1[i]+afh1[j])*(afh2[i]+afh2[j]);
  25. k1[2][0]=3*n*a*((2+3*anu+5*ab)*fh2*afh1[j]+15*afh1[j]*ab+5*anu*fh2*afh1[i]);
  26. k1[2][1]=-15*n*anu*a*b*(afh1[i]+afh1[j])*(afh2[i]+afh2[j]);
  27. k1[2][2]=n*a*a*(2*(1-anu)*fh2*(3+5*fh1)+5*(3+fh1)*(3+fh2)*ab);

  28. for(m=0;m<3;m++)
  29. for(l=0;l<3;l++)
  30. {s=3*i+m;
  31. p=3*j+l;
  32. g[s][p]=k1[m][l]; } }

  33. }

  34. void main()
  35. {  int i,j,l,v,maxnel,inode,nodei,idofn,nrows,nrowe,jnode,nodej,jdofn,
  36. ncols,ncole,nel,maxnod,a1,b1;
  37. float t[12][12],k2[12][12],sum[12][12],astif[100][100],ast[100][100],k[100][100]={0};

  38. ifstream ifile("e:\\shaohuan001.txt");
  39. ifile>>e>>h>>anu>>a>>b>>v>>maxnel>>maxnod;

  40. for(i=0;i<12;i++)
  41. for(j=0;j<12;j++)
  42.   t[i][j]=0;

  43. for(j=0;j<maxnel;j++)
  44. {  
  45. ifile>>loc[j][0]>>loc[j][1]>>loc[j][2]>>loc[j][3];
  46. loc[j][0]--;loc[j][1]--;loc[j][2]--;loc[j][3]--;

  47. if(loc[j][0]%6==0)
  48. i=(loc[j][0]-1)%6;
  49. else
  50. i=loc[j][0]%6-1;

  51. t[0][0]=cos(i*v);t[0][1]=-sin(i*v);t[1][0]=sin(i*v);t[1][1]=cos(i*v);  t[2][2]=1;
  52.   t[3][3]=cos(i*v); t[3][4]=-sin(i*v);t[4][3]=sin(i*v);t[4][4]=cos(i*v); t[5][5]=1;
  53.   t[6][6]=cos(i*v);t[6][7]=-sin(i*v); t[7][6]=sin(i*v);t[7][7]=cos(i*v);t[8][8]=1;
  54.   t[9][9]=cos(i*v);t[9][10]=-sin(i*v);t[10][9]=sin(i*v);t[10][10]=cos(i*v);t[11][11]=1;

  55.   MATD();
  56. for(a1=0;a1<12;a1++)
  57. for(b1=0;b1<12;b1++)
  58. { sum[a1][b1]=0.0;
  59. for(l=0;l<12;l++)
  60. sum[a1][b1]=sum[a1][b1]+g[a1][l]*t[l][b1]; }
  61. for(a1=0;a1<12;a1++)
  62. for(b1=0;b1<12;b1++)
  63. { k2[a1][b1]=0.0;
  64. for(l=0;l<12;l++)
  65.   k2[a1][b1]=k2[a1][b1]+t[l][a1]*sum[l][b1];
  66. }

  67. for(a1=0;a1<3*maxnod;a1++)
  68. for(b1=0;b1<3*maxnod;b1++)
  69.   astif[a1][b1]=0;
  70. for(nel=0;nel<maxnel;nel++)
  71. for(inode=0;inode<4;inode++)
  72. {  nodei=loc[nel][inode];
  73. for(idofn=0;idofn<3;idofn++)
  74. {  nrows=nodei*3+idofn;
  75.    nrowe=inode*3+idofn;
  76. for(jnode=0;jnode<4;jnode++)
  77. {  nodej=loc[nel][jnode];
  78. for(jdofn=0;jdofn<3;jdofn++)
  79. {   ncols=nodej*3+jdofn;
  80.     ncole=jnode*3+jdofn;
  81.     astif[nrows][ncols]=astif[nrows][ncols]+k2[nrowe][ncole];
  82.     }    }    }    }

  83. for(a1=0;a1<3*maxnod;a1++)
  84. for(b1=0;b1<3*maxnod;b1++)

  85. k[a1][b1]=k[a1][b1]+astif[a1][b1];}


  86. for(a1=0;a1<3*maxnod;a1++)
  87. {for(b1=0;b1<3*maxnod;b1++)

  88. cout<<k[a1][b1]<<"\t";}
  89. cout<<endl;

  90. }
复制代码

[ 本帖最后由 风花雪月 于 2007-6-15 11:01 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-6-15 11:06 | 显示全部楼层
是不能编译还是别的什么错误?请说明
发表于 2007-6-20 09:17 | 显示全部楼层
自己写得程序,一句注释都没有,别人怎么看?建议加上注释。
发表于 2007-6-23 20:51 | 显示全部楼层
错误这么多?很多基本的错误,你是不是想让大家帮你调试啊,自己偷懒?:@@
发表于 2007-6-23 21:12 | 显示全部楼层
没注释,看不懂啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 20:51 , Processed in 0.088743 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表