CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  扩充话题 >  程序人生

c的一个难题(对于我来说:))

楼主ZhangRJ(卸载)2003-06-02 14:48:11 在 扩充话题 / 程序人生 提问

我的一段代码,,请帮我查查错,,感激不尽#include   <graphics.h>  
  #include   <math.h>  
  #define   PI   3.1415926  
  main()  
  {  
          int   i,H,R,l,xa,ya,xb,yb,xi,sum=0,m1=0,m2=0;  
          float   fs,ff,f,f1,f0,a,C,q;  
          int   x,xx1,xx2,yy1,yy2,xo,yo,xo1,yo1,EW=0,w;  
          int   gdriver=DETECT,gmode;  
          initgraph(&gdriver,&gmode,"");  
          printf("Input   Hight,arc,C,q,Fs   \n");  
          scanf("%d,%d,%d,%d,%d",&H,&a,&C,&q,&ff);  
          H=H/2;  
          fs=ff;  
          cleardevice();  
          setbkcolor(BLUE);  
          setcolor(10);  
          xa=250+(H/tan(PI*a/180));  
          ya=370-(H);  
          line(250,370,xa,ya);  
          line(170,370,300,370);  
          line(xa,ya,xa+80,ya);  
   
          /*get   o   point       xo,yo     one     */  
          {  
            xo=(250+xa)/2;  
    m1=370-2*H;  
    m2=(370-H)/2;  
            for(yo=m1;yo<=m2;yo++)  
        {  
  R=sqrt((xo-250)*(xo-250)+(yo-370)*(yo-370));  
  yb=ya;  
  xb=xo+sqrt(R*R-(yb-yo)*(yb-yo));  
  while(xb>xo)  
  {  
          xb=xb;  
  }  
  w=(int)acos(1-((yb-370)*(yb-370)+(xb-250)*(xb-250))/(2*R*R));  
                  l=R*PI*w/180;  
                          xi=(int)((xa-250)/10);  
                          for(x=250;x<=xb;x++)  
                                  {  
  while((x-250)%xi==0)  
  {  
          sum=sum+1;  
          xx1=xx2=x;  
          yy2=yo+sqrt(R*R-(xx2-xo)*(x-xo));  
          while(yy2<=ya)  
          yy2=yy2;  
          {  
  if(x<=xa)  
  yy1=xx1*tan(a);  
                                                      else  
  yy1=yb;  
          }  
          if(sum==1)  
                                                      EW=EW+(yy2-yy1)*xi/2;  
          else   if(sum==10)  
                                                      EW=EW+(370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))*xi/2;  
          else   if(xx1>xa&&(xx1-xi)<xa)  
                                              EW=EW+(xx1-xa)*(xa-xx1-xi)*tan(a)/2+xi*(yo+sqrt(R*R-(xx2-xi-xo)*(xx2-xi-xo))-(xx1-xi)*tan(a)+yy2-yy1)/2;  
          else  
      EW=EW+((370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))+x*tan(a))*xi/2;  
                                          }  
                            }  
                  {  
                  f0=ff;  
                          f=EW*sin(a)*cos(a)*ff+EW*sin(a)*sin(a)*tan(q)-C*l*cos(a)+EW*tan(q);  
                                  f1=EW*sin(a)*cos(a);  
                          ff=f0-f/f1;  
                          while(fabs(ff-f0)>=1e-5);  
                  }  
                          if(ff<fs)  
                                  fs=ff;  
                  while   (ff>fs)  
                        {  
                        break;  
                        }  
            }  
          ff=fs;  
  xo1=xo;  
  yo1=yo;  
  m1=(250+xa)/2;  
  m2=(yo1-(ya-370)/2-(xa-250)*tan(90+a)/2)/tan(90+a);  
          for(xo=m1;xo>=m2;xo--)  
  {  
  R=sqrt((xo-250)*(xo-250)+(yo-370)*(yo-370));  
  yb=ya;  
                          xb=xo+sqrt(R*R-(yb-yo)*(yb-yo));  
                          while(xb>xo)  
  w=(int)acos(1-((yb-370)*(yb-370)+(xb-250)*(xb-250))/(2*R*R));  
                  l=R*PI*w/180;  
                          xi=(int)((xa-250)/10);  
                          for(x=250;x<=xb;x++)  
                                  {  
                                  while((x-250)%xi==0)  
                                        {  
      sum=sum+1;  
                                              xx1=xx2=x;  
                                              yy2=yo+sqrt(R*R-(xx2-xo)*(x-xo));  
                                              while(yy2<=ya)  
                                                      yy2=yy2;  
                                              if(x<=xa)  
      yy1=xx1*tan(a);  
                                              else  
                                                      yy1=yb;  
              if(sum==1)  
                                                      EW=EW+(yy2-yy1)*xi/2;  
              else   if(sum==10)  
                                                      EW=EW+(370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))*xi/2;  
                                              else   if(xx1>xa&&(xx1-xi)<xa)  
                                              EW=EW+(xx1-xa)*(xa-xx1-xi)*tan(a)/2+xi*(yo+sqrt(R*R-(xx2-xi-xo)*(xx2-xi-xo))-(xx1-xi)*tan(a)+yy2-yy1)/2;  
                                              else  
      EW=EW+((370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))+x*tan(a))*xi/2;  
                                          }  
                            }  
                  {  
                  f0=ff;  
                          f=EW*sin(a)*cos(a)*ff+EW*sin(a)*sin(a)*tan(q)-C*l*cos(a)+EW*tan(q);  
                                  f1=EW*sin(a)*cos(a);  
                          ff=f0-f/f1;  
                          while(fabs(ff-f0)>=1e-5);  
                  }  
                          if(ff<fs)  
                                  fs=ff;  
                  while   (ff>fs)  
                        {  
                        break;  
                        }  
  }  
  ff=fs;  
  xo1=xo;  
  yo1=yo;  
  m1=xo1*tan(90+a)+(ya+370)/2-(xa+250)*tan(90+a)/2;  
  m2=xo1*tan(90+a)+(ya+370)/2-(xa+250)*tan(90+a)/2-yo1;  
  for(yo=m1;yo>=m2;yo--)  
  {  
          R=sqrt((xo-250)*(xo-250)+(yo-370)*(yo-370));  
  yb=ya;  
                          xb=xo+sqrt(R*R-(yb-yo)*(yb-yo));  
                          while(xb>xo)  
  w=(int)acos(1-((yb-370)*(yb-370)+(xb-250)*(xb-250))/(2*R*R));  
                  l=R*PI*w/180;  
                          xi=(int)((xa-250)/10);  
                          for(x=250;x<=xb;x++)  
                                  {  
                                  while((x-250)%xi==0)  
                                        {  
      sum=sum+1;  
                                              xx1=xx2=x;  
                                              yy2=yo+sqrt(R*R-(xx2-xo)*(x-xo));  
                                              while(yy2<=ya)  
                                                      yy2=yy2;  
                                              if(x<=xa)  
      yy1=xx1*tan(a);  
                                              else  
                                                      yy1=yb;  
              if(sum==1)  
                                                      EW=EW+(yy2-yy1)*xi/2;  
              else   if(sum==10)  
                                                      EW=EW+(370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))*xi/2;  
                                              else   if(xx1>xa&&(xx1-xi)<xa)  
                                              EW=EW+(xx1-xa)*(xa-xx1-xi)*tan(a)/2+xi*(yo+sqrt(R*R-(xx2-xi-xo)*(xx2-xi-xo))-(xx1-xi)*tan(a)+yy2-yy1)/2;  
                                              else  
      EW=EW+((370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))+x*tan(a))*xi/2;  
                                          }  
                            }  
                  {  
                  f0=ff;  
                          f=EW*sin(a)*cos(a)*ff+EW*sin(a)*sin(a)*tan(q)-C*l*cos(a)+EW*tan(q);  
                                  f1=EW*sin(a)*cos(a);  
                          ff=f0-f/f1;  
                          while(fabs(ff-f0)>=1e-5);  
                  }  
                          if(ff<fs)  
                                  fs=ff;  
                  while   (ff>fs)  
                        {  
                        break;  
                        }  
  }  
  ff=fs;  
  xo1=xo;  
  yo1=yo;  
  m1=(250+xa)/2;  
  m2=(yo1-(ya+370)/2+(xa+250)*tan(90+a)/2)/tan(90+a);  
  for(xo=m1;xo>=m2;xo--)  
  {  
          R=sqrt((xo-250)*(xo-250)+(yo-370)*(yo-370));  
          yb=ya;  
                          xb=xo+sqrt(R*R-(yb-yo)*(yb-yo));  
                          while(xb>xo)  
  w=(int)acos(1-((yb-370)*(yb-370)+(xb-250)*(xb-250))/(2*R*R));  
                  l=R*PI*w/180;  
                          xi=(int)((xa-250)/10);  
                          for(x=250;x<=xb;x++)  
                                  {  
                                  while((x-250)%xi==0)  
                                        {  
      sum=sum+1;  
                                              xx1=xx2=x;  
                                              yy2=yo+sqrt(R*R-(xx2-xo)*(x-xo));  
                                              while(yy2<=ya)  
                                                      yy2=yy2;  
                                              if(x<=xa)  
                              yy1=xx1*tan(a);  
                                              else  
                                                      yy1=yb;  
              if(sum==1)  
                                                      EW=EW+(yy2-yy1)*xi/2;  
              else   if(sum==10)  
                                                      EW=EW+(370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))*xi/2;  
                                              else   if(xx1>xa&&(xx1-xi)<xa)  
                                              EW=EW+(xx1-xa)*(xa-xx1-xi)*tan(a)/2+xi*(yo+sqrt(R*R-(xx2-xi-xo)*(xx2-xi-xo))-(xx1-xi)*tan(a)+yy2-yy1)/2;  
                                              else  
      EW=EW+((370+sqrt(R*R-(x-xi-xo)*(x-xi-xo))-(x-xi)*tan(a))+x*tan(a))*xi/2;  
                                          }  
                            }  
                  {    
                  f0=ff;  
                          f=EW*sin(a)*cos(a)*ff+EW*sin(a)*sin(a)*tan(q)-C*l*cos(a)+EW*tan(q);  
                                  f1=EW*sin(a)*cos(a);  
                          ff=f0-f/f1;  
                          while(fabs(ff-f0)>=1e-5);  
                  }  
                          if(ff<fs)  
                                  fs=ff;  
                  while   (ff>fs)  
                        {  
                        break;  
                        }  
  }  
  ff=fs;  
  xo1=xo;  
  yo1=yo;  
          xo=xo1;  
  yo=yo1;  
          getch();  
          closegraph();  
          return   0;  
  }  
  }  
  问题点数:0、回复次数:26Top

1 楼flashsj()回复于 2003-06-02 15:25:17 得分 0

:)Top

2 楼mianht(心随你冻)回复于 2003-06-02 18:52:26 得分 0

ft!  
   
  这个也太长了吧!  
  不是作业之类吧!Top

3 楼slij(子凌)回复于 2003-06-02 19:45:55 得分 0

你想实现什么呢??讲一下啊,不然看会这个就比较辛苦了,Top

4 楼mfcer2(深深迷醉⊙⊙)回复于 2003-06-19 01:06:37 得分 0

你写程序怎么不加注解,叫我怎么看嘛!  
  不如在下面加了注解之后,再发给我一份。  
  我的Email:   mfcer@163.comTop

5 楼javanew(我是java新手)回复于 2003-06-19 13:04:24 得分 0

turboc,现在还能找到,真的很难了Top

6 楼hapen(hainiao)回复于 2003-06-19 13:57:54 得分 0

请先写注释   这样对你对别人都有好处  
  Top

7 楼callzjy((草魚))回复于 2003-06-19 21:51:03 得分 0

转到C/C++版块去吧Top

8 楼icenow112233(icewater)回复于 2003-06-20 12:08:16 得分 0

拜托,这样的写法,让人很难懂的哦。不如发个附件,写清你想要完成什么功能啊。Top

9 楼HugeWizard(巨灵神)回复于 2003-06-20 16:30:40 得分 0

太长了,没法看,我们不是长工Top

10 楼wellbredtion(不耻下问也)回复于 2003-06-21 04:24:50 得分 0

实在是太长了能不能优化,没有一天  
  工夫看不下来。Top

11 楼yonge23(东方一剑)回复于 2003-06-21 15:49:46 得分 0

可怖,还没有写过这么长的程序!!!Top

12 楼5hl(5hl)回复于 2003-06-21 17:09:30 得分 0

叫别人看程序不管多长,要写些注释,Top

13 楼rf0007(热风)回复于 2003-06-22 17:31:24 得分 0

高手呀  
  没有注解也能写得出来呀  
  高手  
  又见高手呀  
  下要麻烦你写一下注释  
  我们真不是长工Top

14 楼oxo_liu_tao(黑玫瑰)回复于 2003-06-24 19:00:54 得分 0

楼上的观点不能苟同。  
   
  写代码不加注释不是高手的行为,是新手的行为。  
  Top

15 楼zhouweiwansui(彪悍的论点不需要解释)回复于 2003-06-25 00:06:24 得分 0

我靠,古董级别的代码...Top

16 楼cabin2003(风轻云淡)回复于 2003-06-25 09:19:49 得分 0

这个代码要看懂比写成难多了,要有注释啊   !!!Top

17 楼sunnylake(xiaonuo)回复于 2003-06-25 09:25:41 得分 0

呵呵,为了考试吗?Top

18 楼luoda(罗达)回复于 2003-06-25 09:29:55 得分 0

没有进行功能分解(c++写的话,这样的问题就少多了),这么长的代码都  
  写到一个main中,难于找错是必然的,程序员象你这样,卫星也得掉下来。Top

19 楼sailorcgh(水手@msn:sailorcgh@hotmail.com;QQ:78758705)回复于 2003-06-27 14:11:22 得分 0

我看是计算机图形编程方面的。Top

20 楼coollangzi(风)回复于 2003-06-27 15:10:25 得分 0

才200行呀!我写了一个2000行的C(上学的时候)前些日子发现一共不到10行注释!  
  当时我就   光当   啦!!!  
  不过那个程序得了班机仅有的两个优的一个:)Top

21 楼Norse(蓝精灵)回复于 2003-06-27 17:42:47 得分 0

http://www.funet.fi/pub/languages/c-style/c-style/gnu-coding-std.txtTop

22 楼zhuoyc(zhuoyc)回复于 2003-06-28 11:28:14 得分 0

我一看就知道是一个画圆弧的函数。Top

23 楼zhuoyc(zhuoyc)回复于 2003-06-28 11:29:05 得分 0

况且是用brensham算法Top

24 楼yaya9456(依然)回复于 2003-06-28 12:17:15 得分 0

建议注意一下编码规范Top

25 楼1122sky(小小程序员)回复于 2003-06-28 15:31:37 得分 0

我看到头都晕了!!!请加注释好吗??  
  谢谢!!!Top

26 楼B2China(海陆空天电磁)回复于 2003-06-28 17:08:21 得分 0

晕~~~~  
  水源的兄弟们头都被你那莫名其妙的没有注释的代码折腾大了!Top

相关问题

  • c#求难题
  • 请教c难题!
  • 大家好,小弟学习C++过程中遇到难题(对于我来说),特来求教!
  • 请帮我解决一个C语言的难题。
  • C指针的难题???
  • Visual C++ 图形难题
  • del_c_sharp的大难题
  • 高手请进,c难题
  • ASP.NET+C#+ORACLE过程难题!!!!!!!
  • 历史上C#超级难题让我解决了,我太牛了

关键词

  • 代码
  • xo
  • yo
  • yb
  • ya
  • xa
  • xb
  • xi
  • tan
  • 注释

得分解答快速导航

  • 帖主:ZhangRJ

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo