判断某个点与某条直线的关系_第1页
判断某个点与某条直线的关系_第2页
判断某个点与某条直线的关系_第3页
判断某个点与某条直线的关系_第4页
判断某个点与某条直线的关系_第5页
已阅读5页,还剩10页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计任务手册题目:判断点和直线的关系一,课程设计时间20 .二,课程设计内容用c语言编写软件来完成以下任务:直线要么通过一个点,要么不通过。用C语言编写程序,功能如下:首先从键盘输入一条直线的两个坐标对,然后输入任意一个坐标对,最后判断它们之间的关系,并给出适当的关系评价。三,课程设计要求程序质量:实现结构化编程的思想。至少有四个菜单:“输入确定直线的两个坐标对”、“输入任意坐标对”、“判断它们之间的关系”和“退出”。用户界面友好,功能清晰,操作方便。代码应该适当缩进,并给出必要的注释,以增强程序的可读性。代码应该适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明:课程结束后,交

2、课程设计说明书和源程序。课程设计说明的内容请参考提供的模板。四.教师和学生签名教师:学生签名:V.成就六.教师评论目录一、需求分析1二、程序流程图2三.核心技术及相应程序段8的实施说明四.个人总结10V.参考文献11六.完整的源程序11一、需求分析通过对程序设计主题的分析,我们可以看出整个程序的设计和实现大致分为三个模块,每个模块对应一个函数,它们的功能是:调用一个子函数,判断两个数是否相等,并引入一个预设的函数来判断点与直线的关系。在这些功能中,前三个功能的实现是严格按照主题的要求进行的,而后面的屏幕清除功能是附加功能。1.通过开关调用子函数调用四个子函数;2.确定这两个数字是否相等。使用i

3、f函数确定输入的两点是否可以形成一条直线;3.进入预设功能,判断该点与直线的关系,将待判断的点带入预设功能,通过if判断该点是否在由前面两个输入点组成的直线上;除了上述功能之外,程序还具有退出功能,该功能可以在程序的一次运行中循环执行所有功能,并根据需要终止程序的执行。二、程序流程图开始1、程序的总体结构菜单开关选择放弃清除屏幕判断点的直线关系输入要判断的点输入组成一条直线的两点图1程序总体结构图子功能(输入两点形成一条直线)子功能(输入两点形成一条直线)输入两点坐标x1 y1,x2 y2X1=x2y1=y2NY输入的点不可以形成一条直线子函数(输入要判断的点)输入要确定的点子功能(判断点与线

4、的关系)a=(y1-y2)/(x1-x2)b=(x1*y2-x2*y1)/(x1-x2)y0=a*x0 bNY这条直线穿过这个点这条线不穿过这个点主要功能图2子功能的工作规则2.调用子功能(1)主函数调用子函数开始菜单开关选择放弃清除屏幕判断点的直线关系输入要判断的点输入组成一条直线的两点子功能(输入两点形成一条直线)(2)判断两个数是否相等输入两点坐标x1 y1,x2 y2X1=x2y1=y2NY输入的点不可以形成一条直线子函数(输入要判断的点)(3)引入预设功能,判断点与直线的关系子功能(判断点与线的关系)a=(y1-y2)/(x1-x2)b=(x1*y2-x2*y1)/(x1-x2)y0

5、=a*x0 bNY这条直线穿过这个点这条线不穿过这个点主要功能三、核心技术的实施及相应程序该程序主要由四个自定义功能和一个主功能组成,其中主功能以菜单的形式调用其他功能,实现所有需要的功能。在这些函数中,主函数调用子函数来判断输入点是否可以形成直线,判断点与直线的关系是程序的重点,这将在下面单独说明。1.主函数调用子函数通过while(1)的真循环调用开关的子功能,通过屏幕提示选择要执行的步骤,输入代码,通过开关调用要运行的子功能案例功能。当你输入代码5时,直到你想退出,函数通过返回跳出while循环,函数结束。void main()char选择;菜单();choice=getch();而(1

6、)开关(选择)案例1:m();打破;案例2:n();打破;案例3: p();打破;案例4: q();打破;案例5:返回;choice=getch();2.确定这两个数字是否相等调用子函数m时,输入两点的坐标,并判断输入的两点是否能形成一条直线;如果没有,重新输入;如果是,继续下一步。子功能m循环通过do.正在.声明。在循环体中,由if函数来判断。如果x1=x2y1=y2为真,将显示“重新输入单词”。当判断为真时,继续循环直到x1=x2y1=y2为0,跳出并执行下一步。空隙m()put(“输入确定直线的两个坐标对:”);做scanf(%f%f%f%f ,x1,y1,x2,y2);if(x1=x2

7、y1=y2)put(“以上两个坐标对不能确定一条直线,请重新输入两个不同的坐标对:”);而(x1=x2 y1=y2);3.引入预设功能,判断点与直线的关系调用子函数p时,将待判断的输入点带入前两点形成的直线中,判断其是否在直线上。预先编译一个=(y1-y2)/(x1-x2);b=(x1 * y2-x2 * y1)/(x1-x2);计算直线方程的a和b,然后用if函数判断该点是否在直线上。当a*x0 b=y0的值为1时,显示“此直线通过此点”;当其值为0时,显示“该直线不通过该点”无效p()浮动a、b;a=(y1-y2)/(x1-x2);b=(x1 * y2-x2 * y1)/(x1-x2);i

8、f(a*x0 b=y0)put(此线穿过此点 n );Else puts(此线不通过此点 n);第四,个人总结一周的C语言课程设计结束了。在这短短的一周时间里,我不仅复习了上学期C语言的一些知识点,还学到了新的知识,所以我认为我从这次课程设计中学到了很多。我认为本课程的收获不仅仅是完成题目要求,还在于通过学习掌握分析和解决问题的方法。这个项目主要关注算法。通过本课程设计,我掌握了如何用C语句准确表达数学算法。我认为这为以后专业课的学习和课程设计打下了良好的基础。该程序充分实现了题目中的要求、输入数据、开始计算、清除屏幕、退出等功能。总之,我们应该把从教科书中学到的东西运用到实践中去,实现它的更

9、高价值。V.参考1谭浩强。编程。北京:清华大学出版社,2005。刘成,C语言程序设计实验指导与习题,北京。六.完整的源程序#包括“stdio.h”#在定义getch()函数的地方包含 conio.h/。#包括定义system()函数的“stdlib . h”/。float x1=0,x2=0,x0=0,y1=0,y2=0,y0=0;无效菜单()Puts(请选择您想做的工作的序列号,然后输入: (1、2和3项应依次执行);放(1,请输入两个坐标对:以确定一条直线);放(2,请输入任何待判断的坐标对:);放(三判断两者的关系);放入(“4清屏”);投入(5个出口);空隙m()put(“输入确定直线

10、的两个坐标对:”);做scanf(%f%f%f%f ,x1,y1,x2,y2);如果(x1=x2y1=y2) /*判断两点是否可以形成一条直线*/put(“以上两个坐标对不能确定一条直线,请重新输入两个不同的坐标对:”);而(x1=x2 y1=y2);/*当条件值为1时,继续循环,当条件值为0时,跳出*/无效n()看跌期权()输入1个待判断的坐标对:);scanf(% f % f ,x0,y0);无效p()浮动a、b;a=(y1-y2)/(x1-x2);b=(x1 * y2-x2 * y1)/(x1-x2);/*计算出直线的a b值*/if(a*x0 b=y0) /*判断点是否在直线上,值为1时在。值为0时不在*/看跌期权()此直线通过这个点 n);其他将(此直线不通过这个点 n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论