判断某个点与某条直线的关系.docx

上传人:b****7 文档编号:11217416 上传时间:2023-02-25 格式:DOCX 页数:13 大小:111.07KB
下载 相关 举报
判断某个点与某条直线的关系.docx_第1页
第1页 / 共13页
判断某个点与某条直线的关系.docx_第2页
第2页 / 共13页
判断某个点与某条直线的关系.docx_第3页
第3页 / 共13页
判断某个点与某条直线的关系.docx_第4页
第4页 / 共13页
判断某个点与某条直线的关系.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

判断某个点与某条直线的关系.docx

《判断某个点与某条直线的关系.docx》由会员分享,可在线阅读,更多相关《判断某个点与某条直线的关系.docx(13页珍藏版)》请在冰豆网上搜索。

判断某个点与某条直线的关系.docx

判断某个点与某条直线的关系

课程设计任务书

题目:

判断某个点与某条直线的关系

一、课程设计时间

20。

二、课程设计内容

用C语言编写软件完成以下任务:

一条直线要么通过某个点,要么不通过。

用C语言写程序,功能如下:

从键盘先输入1条直线的2个坐标对,然后再输入任意1个坐标对,最后判断2者的关系,并给予适当的关系评价。

三、课程设计要求

程序质量:

✧贯彻结构化的程序设计思想。

✧至少有“输入决定直线的2个坐标对”、“输入任意1个坐标对”、“判断2者关系”、“退出”四个菜单。

✧用户界面友好,功能明确,操作方便。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

✧课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容参见提供的模板。

四、指导教师和学生签字

指导教师:

学生签名:

五、成绩

六、教师评语

 

一、需求分析1

二、程序流程图2

三、核心技术的实现说明及相应程序段8

四、个人总结10

五、参考文献11

六、完整源程序11

 

一、需求分析

经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:

调用子函数,判断两数是否相等,带入预设函数判断点与直线关系。

在这些函数当中,前三个函数的实现严格按照题目的要求,而后面的清屏函数属于附加功能。

1、调用子函数通过switch来调用四个子函数;

2、判断两数是否相等用if函数判断所输入的两点是否能组成直线;

3、带入预设函数判断点与直线关系将待判断点带入预设函数,通过if判断此点是否在之前输入的两点所组成的直线上;

除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。

二、程序流程图

1、程序总体结构图

图1程序总体结构图

 

N

Y

 

 

N

Y

 

图2子函数工作细则

2、调用子函数

(1)主函数调用子函数

 

(2)判断两数是否相等

 

N

Y

 

(3)带入预设函数判断点与直线关系

N

Y

三、核心技术的实现说明及相应程序段

本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。

在这些函数当中,主函数调用子函数,判断所输入点是否能形成直线,判断点与直线关系是程序的重点,下面分别进行说明。

1、主函数调用子函数

通过while

(1)的真循环来进行switch的子函数调用,通过屏幕提示,来选择要进行的步骤,输入代码,通过switch……case……函数,来调用想运行的子函数。

直到当输入代码5时,想退出,函数通过return跳出while循环,函数运行结束。

voidmain()

{

charchoice;

menu();

choice=getch();

while

(1)

{

switch(choice)

{

case'1':

m();break;

case'2':

n();break;

case'3':

p();break;

case'4':

q();break;

case'5':

return;

}

choice=getch();

}

}

2、判断两数是否相等

当调用子函数m时,进行输入两点坐标,并判断所输入的两点是否能构成直线,若不能,则重新输入,若能,则继续进行下一步骤。

子函数m通过do……while……语句来进行循环,在循环体中,用if函数进行判别,若x1==x2&&y1==y2成立,则显示“重新输入字样”,while判断为真,继续进行循环,直到x1==x2&&y1==y2值为0时,跳出,执行下一步骤。

voidm()

{

puts("输入决定直线的2个坐标对:

");

do

{

scanf("%f%f%f%f",&x1,&y1,&x2,&y2);

if(x1==x2&&y1==y2)

puts("以上2个坐标对无法决定1条直线,请重新输入2个不相同的坐标对:

");

}

while(x1==x2&&y1==y2);

}

3、带入预设函数判断点与直线关系

当调用子函数p时,将输入的待判断点带入之前的两点所组成的直线中,判断是否在该直线上。

通过事先编译a=(y1-y2)/(x1-x2);b=(x1*y2-x2*y1)/(x1-x2);计算出直线方程的a与b,再用if函数来判断点是否在直线上。

当a*x0+b==y0值为1时,显示“此直线通过这个点”当其值为0时,显示“此直线不通过这个点”

voidp()

{

floata,b;

a=(y1-y2)/(x1-x2);

b=(x1*y2-x2*y1)/(x1-x2);

if(a*x0+b==y0)

puts("此直线通过这个点\n");

elseputs("此直线不通过这个点\n");

}

四、个人总结

一周的C语言课程设计结束了,在这短短的一周时间里,不仅复习了上学期C语言中的一些知识点,而且还学到了新的知识,所以我认为自己在此次课程设计中有了很大的收获与体会。

我想这次课设的收获不仅仅是完成了题目要求,更多的是通过此次学习掌握了分析问题、解决问题的方法。

本程序重点在于算法,通过此次课程设计我较熟练地掌握了如何将数学算法的表达准确的用C语句实现,我想,这为今后的学习及专业课的课程设计打下了良好的基础。

本次程序完全实现了题目中的要求,输入数据,开始计算,清屏,退出等功能。

总之,要把学到的课本上的知识运用到实际中,实现其更高的价值。

五、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005。

2刘成,C语言程序设计实验指导与习题集,北京。

六、完整源程序

#include"stdio.h"

#include"conio.h"//其中定义了getch()函数。

#include"stdlib.h"//其中定义了system()函数。

floatx1=0,x2=0,x0=0,y1=0,y2=0,y0=0;

voidmenu()

{

puts("请选择您要进行的工作的序号,然后进行输入:

(123项请按顺序执行)");

puts("1请输入决定直线的2个坐标对:

");

puts("2请输入任意1个待判断的坐标对:

");

puts("3判断2者关系");

puts("4清屏");

puts("5退出");

}

voidm()

{

puts("输入决定直线的2个坐标对:

");

do

{

scanf("%f%f%f%f",&x1,&y1,&x2,&y2);

if(x1==x2&&y1==y2)/*判断两点是否能组成直线*/

puts("以上2个坐标对无法决定1条直线,请重新输入2个不相同的坐标对:

");

}

while(x1==x2&&y1==y2);/*当条件值为1时继续循环,值为0时跳出*/

}

voidn()

{

puts("输入1个待判断的坐标对:

");

scanf("%f%f",&x0,&y0);

}

voidp()

{

floata,b;

a=(y1-y2)/(x1-x2);

b=(x1*y2-x2*y1)/(x1-x2);/*计算出直线的ab值*/

if(a*x0+b==y0)/*判断点是否在直线上,值为1时在。

值为0时不在*/

puts("此直线通过这个点\n");

elseputs("此直线不通过这个点\n");

}

voidq()

{

system("cls");/*清屏*/

menu();

}

voidmain()

{

charchoice;

menu();

choice=getch();

while

(1)

{

switch(choice)/*通过switch选择要进行的步骤*/

{

case'1':

m();break;

case'2':

n();break;

case'3':

p();break;

case'4':

q();break;

case'5':

return;

}

choice=getch();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1