资源描述:
《吉林大学程序设计基础教材第五章-模块化程序设计--函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章模块化程序设计-函数求给定三角形的外心—模块化程序设计函数程序设计实例【例5.1】求给定三角形的外心CB图5.1三角形外心YXAdefOEFD输入三个顶点坐标求垂直平分线e求垂直平分线f图5.2求三角形外心的PAD求e、f交点OO点即为外心,输出其坐标以e为例,求解垂直平分线图5.3求垂直平分线e求AC边的中点E求AC边的直线方程求过E点的与AC垂直的直线的直线方程假设A点坐标为xa、yaB点坐标为xb、ybC点坐标为xc、ycAC边的中点E的坐标为xe、yeAC边的直线方程表示为Y=a1*X+b1AB边的直线方程表示为Y=a2*X+b2AC边垂直平分线e的直线方程为
2、Y=u1*X+v1AB边垂直平分线f的直线方程为Y=u2*X+v2输入三个顶点坐标图5.4求三角形外心的完整PADxo=(u2-u1)/(v2-v1);yo=u1*xo+v1;O点即为外心,输出其坐标xe=(xa+xc)/2;ye=(ya+yc)/2;a1=(ya-yc)/(xa-xc);b1=ya-a1*xa;u1=-1/a1;v1=ye-u1*xexf=(xa+xb)/2;yf=(ya+yb)/2;a2=(ya-yb)/(xa-xb);b2=ya-a1*xa;u2=-1/a2;v2=yf-u2*xf#include//括入标准输入输出函数库头文件voi
3、dmain(){//主函数floatxa,ya,xb,yb,xc,yc;//分别保存三角形三个顶点的X、Y方向坐标floatxe,ye;//AC边的中点E的坐标floatxf,yf;//AB边的中点F的坐标floata1,b1;//AC边的直线方程系数floata2,b2;//AB边的直线方程系数floatu1,v1;//AC边的垂直平分线的直线方程系数floatu2,v2;//AB边的垂直平分线的直线方程系数floatxo,yo;//外心O的坐标/*输入三个点的X、Y方向坐标*/printf("pleaseinputxa,ya,xb,yb,xc,yc:");scanf
4、("%f%f%f%f%f%f",&xa,&ya,&xb,&yb,&xc,&yc);/*求AC边垂直平分线e*/xe=(xa+xc)/2;//先求AC边的中点Eye=(ya+yc)/2;a1=(ya-yc)/(xa-xc);//再求过A、C两点的直线方程b1=ya-a1*xa;u1=-1/a1;//求过E点的与AC垂直的直线的直线方程v1=ye-u1*xe;/*求AB边垂直平分线f*/xf=(xa+xb)/2;//先求AB边的中点Eyf=(ya+yb)/2;a2=(ya-yb)/(xa-xb);//再求过A、B两点的直线方程b2=ya-a1*xa;u2=-1/a2;//求过F
5、点的与AC垂直的直线的直线方程v2=yf-u2*xf;/*求e,f交点O*/xo=(u2-u1)/(v2-v1);yo=u1*xo+v1;/*打印输出*/printf(“外心坐标:x=%10.3fy=%10.3f”,xo,yo);}计算过程一致,而参与运算的数据不同【例5.2】用函数改写例5.1的程序#include//括入标准输入输出函数库头文件1/*求垂直平分线:参数:两个顶点r、s的x、y坐标*/floataa;//全局变量,用于保存传递rs边的垂直平分线的直线方程斜率2floatlines(floatxr,floatyr,floatxs,flo
6、atys){//3floatxt,yt;//中点T的坐标4floata,b;//过r、s两点的直线方程系数5/*先求中点T*/xt=(xr+xs)/2;//6yt=(yr+ys)/2;//7/*再求过r、s两点的直线方程rs*/a=(yr-ys)/(xr-xs);//8b=yr-a*xr;//9/*求过中点T的与rs垂直的直线方程*/aa=-1/a;//计算斜率aa10returnyt-aa*xt;//计算截距b,并带着b值返回11}voidmain(){//主函数13floatxa,ya,xb,yb,xc,yc;//分别保存三角形三个顶点的X、Y坐标14floatu1,v
7、1;//AC边的垂直平分线的直线方程系数15floatu2,v2;//AB边的垂直平分线的直线方程系数16floatxo,yo;//外心O的坐标17/*输入三个点的X、Y方向坐标346360416108116212*/printf("pleaseinputxa,ya,xb,yb,xc,yc:");//18scanf("%f%f%f%f%f%f",&xa,&ya,&xb,&yb,&xc,&yc);/*求AC边垂直平分线e*/v1=lines(xa,ya,xc,yc);//截距20u1=aa;//斜率21/*求AB