中北大学C语言课程设计《计算四边形面积》.doc
《中北大学C语言课程设计《计算四边形面积》.doc》由会员分享,可在线阅读,更多相关《中北大学C语言课程设计《计算四边形面积》.doc(13页珍藏版)》请在装配图网上搜索。
中 北 大 学课程设计说明书学 院、系:软件学院专 业:软件工程学 生 姓 名:学 号:1221011319设 计 题 目:四边形计算 起 迄 日 期: 2013年10月11日2013年11月16日指 导 教 师:李华玲日期: 2013年11月16日1 设计目的 .2 任务概述 .3 模块划分 .4 主要函数说明及其N-S图 .5 程序运行数据及其结果 .6 程序设计心得 .7 附录(代码) .1 设计目的 (1)进一步巩固和复习C程序设计的基础知识; (2)培养学生结构化程序、模块化程序设计的方法和能力; (3)了解软件的编制过程及各环节的具体内容; (4) 提高程序调试技巧、软件设计能力和代码规范化等素质;提高分析问题、解决问题以及实际运用能力。2 任务概述用C程序语言编写源程序来验证计算四边形,要求:1) 在屏幕上能够手动输入待计算的四边形各边边长,顶点、对角线上各点及延长线的交点的名称;2) 输入完成后通过选择后,可以通过编写的程序验证三角形RMN的面积是四边形ABCD面积的四分之一;3) 将验证结果显示在屏幕上。4) 验收时程序能够演示,自己单独做。3 模块划分主函数计算三角形面积的函数计算两直线交点的函数初步检测四边形的函数计算两点间距离大函数4 主要函数说明及其N-S图( 1)首先根据提示从键盘手动输入四个定点的坐标,调用“初步检测四边形函数”检查输入的点是否可用,如果有重合在一起的点或AB与CD近乎平行,则异常结束。(2)其次,推算M、N两个“中点”的坐标,并且调用求交点函数计算BA与CD延长后的交点r的坐标。(3)接着,调用“计算三角形面积的函数”分别算出四边形abcd和三角形的mnr的面积。计算四边形abcd面积的时候,需要检测该四边形是否为凹四边形,如是,则异常结束,必要地,计算三角形面积的时候需要调用“计算两点间线段距离的函数”。(4)最后,计算四边形abcd和三角形的mnr的面积之比,并输出结果。开始定义 pname=ABCD,*p=pname, Point m,n,r,P4,*PP=P, double abcd,rmn,abcd1!ok(P)Y N*p printf(input (x,y) of point %c:,*p)scanf(%lf%*c%lf,&PP-x,&PP-yp+pp+fprintf(stderr,invalid input.nn)exit(1)m.x = (a.x+c.x)/2m.y = (a.y+c.y)/2n.x = (b.x+d.x)/2n.y = (b.y+d.y)/2r= pointOfIntersection()abcd = area_of_triangle(a,b,c) + area_of_triangle(a,d,c)abcd1= area_of_triangle(a,b,d) + area_of_triangle(b,d,c)fabs(abcd1-abcd)EPSY Nfprintf(stderr,凹四边形!不行!nn) exit(2)rmn = area_of_triangle(r,m,n)printf(as a resultnABCD:RMN=%4.2f:%4.2f=%4.2fn ,abcd,rmn,abcd/rmn); 图1-1主函数main()定义side4,i,j定义tj=(i+1)%4t=length(&pi,&pj)fabs(t)EPS)YNsidei=treturn 0定义k1,k2for(i=0;i4;i+)k1=(p1.y-p0.y)/(p1.x-p0.x)k2=(p3.y-p2.y)/(p3.x-p2.x)if(fabs(k2-k1)x-B-x,2)+pow(A-y-B-y,2)图1-4计算两点间直线距离函数length()开始定义cdx,cdy,abx,aby,dax,day, del,du,dv;cdx = c.x-d.xcdy = c.y-d.yabx = a.x-b.xaby = a.y-b.y;dax = d.x-a.xday = d.y-a.ydel = cdx*aby-cdy*abx;du = dax*aby-day*abx;dv = cdx*day-cdy*dax;du /= dedv /= delr.x = d.x-du*cdxr.y = d.y-du*cdyreture r图1-5计算交点坐标的函数pointOfIntersection ()5 程序运行数据及其结果 四边形与三角形面积之比4:1点重合AB与CD平行四边形是凹四边形6 程序设计心得 这次的课程设计实验是对我们进入大学以来学习C语言结果的一次考验,作为软件专业的学生来说,掌握软件开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 通过这次课程设计,不仅重温了C语言的知识,而且还强化了对C程序的运行和测试。比如,当用到定义点的变量时,用到了结构体的定义和新类型的定义,知道了怎样用typedef来定义新的类型名,在编程过程中,用到了基本类型有int、char,用到常用运算符及其表达式,赋值,算术,逻辑,还有顺序结构。C语言程序有很多难点,例如数组、指针、结构体,但重点也是它们,只有经过多次应用,才能够牢牢掌握它们。 编好程序之后,要在电脑上运行,运行时,电脑会给你指出代码中的错误,有时候是一些标示符的错误应用,有时候是代码编写格式错误,反反复复,等到把程序调到能够运行了,你会发现,在这个过程中,有很多自己忽略的小知识点,自己把它改正,这就是经验,不仅复习了知识,还得到了提高,我觉得这就是课程设计的目的。7 附录(代码) #include#include#include#define EPS 1e-10typedef struct double x; double y; Point;/*两点之间的直线距离*/double length(Point *A,Point *B) return sqrt(pow(A-x-B-x,2)+pow(A-y-B-y,2);double area_of_triangle(Point A,Point B,Point C) double area,a,b,c,p; a=length(&B,&C); b=length(&C,&A); c=length(&A,&B); p=(a+b+c)/2; area=sqrt(p*(p-a)*(p-b)*(p-c); return area;/*初步检测四边形*/int ok(Point *p) double side4;/*4边长*/ int i,j; for(i=0; i4; i+) double t; j=(i+1)%4; t=length(&pi,&pj); if(fabs(t)EPS)return 0; /*不允许有重合在一起的点*/ sidei=t; double k1,k2;/*斜率*/ k1=(p1.y-p0.y)/(p1.x-p0.x); k2=(p3.y-p2.y)/(p3.x-p2.x); if(fabs(k2-k1)x,&PP-y); p+; PP+; /*至此得到四边形的4个顶点的坐标*/ if(!ok(P)/*如果AB/CD则无法相交只好退出*/ fprintf(stderr,invalid input.nn); exit(1); /*异常结束1*/ /*推算M、N两个“中点”的坐标*/ m.x = (a.x+c.x)/2; m.y = (a.y+c.y)/2; n.x = (b.x+d.x)/2; n.y = (b.y+d.y)/2; r = pointOfIntersection(a,b,c,d);/调用求交点函数,并将求出的点赋值给r /*这里计算四边形ABCD的面积*/ abcd = area_of_triangle(a,b,c) + area_of_triangle(a,d,c); /*补充检测四边形,看它的凹凸性*/ abcd1= area_of_triangle(a,b,d) + area_of_triangle(b,d,c); if(fabs(abcd1-abcd)EPS) fprintf(stderr,凹四边形!不行!nn); exit(2); /*异常结束2*/ /*这里计算RMN的面积*/ rmn = area_of_triangle(r,m,n); /*这里是二者相除,看它是否非常接近于4.00*/ printf(as a resultnABCD:RMN=%4.2f:%4.2f=%4.2fn ,abcd,rmn,abcd/rmn);- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算四边形面积 北大 语言 课程设计 计算 四边形 面积
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文