c的一个难题(对于我来说:))
我的一段代码,,请帮我查查错,,感激不尽#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




