精华内容
下载资源
问答
  • x3,y3 三个坐标构成一个三角形,随机输入一个坐标判断是否再三角形范围内。” 拿到这个题目,  首先想到要如何从键盘输入三个参数,目前为止我对pyton键盘输入函数的了解仅限于raw_input() 函数,但是

    (2017/2/21:坚持学python,坚持写博客,这是第三篇;万事开头难,坚持会更难,希望我能坚持住!)

    昨天薛老师留的作业题目是:“输入x1,y1;x2,y2;x3,y3 三个坐标构成一个三角形,随机输入一个坐标判断是否再三角形范围内。”

    拿到这个题目,

            首先想到的要如何从键盘输入三个参数,目前为止我对pyton键盘输入函数的了解仅限于raw_input() 函数,但是这个函数貌似一次交互只能读入一个参数;能否一次交互实现多个参数的输入呢?百度一下后发现raw_input()函数为python2中所有,input()函数未python3所有,而raw_input()函数还有一个split()方法,可以用诸如逗号、空格符之类的字符对对多个参数进行分隔。于是这个问题解决。

           然后就是要对输入的三个参数进行判断,看看是否满足构成三角形的条件(任意两边之和大于第三边,任意两边之差小于第三边)

           最后,当三个坐标参数满足三角形构成条件的时候,要交互式提示用户输入第四个点坐标,并判定第四个点是否在三角形内。这是个数学问题,但是当时并未上网查询此问题的算法,因为自己有个思路,就是第四个点的横坐标不能比三个顶点的横坐标最大值还大,也不能比三个顶点横坐标最小值还小;同样,第四个点的纵坐标也不能大于三个顶点纵坐标的最大值,并且不能小于三个顶点纵坐标的最小值。这两个坐标一旦有一个超出范围,必在三角形之外,所以想当然地以为,其补集的点就一定在三角形之内。于是按照思路写出了下面的代码,并用点(0,0),(4,0),(2,2)作为顶点,外点(0,2)和内点(2,1)进行判断测试,代码如下图:

    这段代码运行没有错误,且能正常判定三角形是否构成,用点外点D(5,6)和内点D(2,1)进行测试,也都能成功判断D与三角形的位置关系,执行结果如下图:

    外点测试:

    内点测试结果如下图:

    构不成三角形测试:


    看到结果后窃喜,以为写的不错,结果回到宿舍,被舍友一眼挑出毛病,比如她找到一点D,如下图,本应在三角形外,但用我的程序会计算出它在形内:

           这是为什么呢?想了一下,我用来判断点与三角形位置关系的条件是:第四个点D的横纵坐标中只要有一个超出范围,就必在形外,而其对立面,则认为必在形内;但是我的思路果然有漏洞,比如上图中D点,本在外面,却被判定为在内部了。好好反思一下,我的算法判定条件的几何意义应该是一个矩形,是这个三角形的最小外接矩形,所以用这个算法判断出的结果应该是点与这个外界矩形的拓扑关系,而不是它与三角形本身的关系。这实际上是一个数学问题,必然有与之对应的算法,只是觉得我认为是灵感突发的想法居然不对,未免有些失落。

          然后反复斟酌这个问题,到网上查了一下相关算法,发现网上盛传的算法有这么4种,一是面积法,若点在三角形内,则该点和三个定点连线构成的三个小三角形面积之和与大三角形面积相等,如果不相等,则说明点在外部。(计算面积要用海伦公式,已知三边求面积)二是夹角法,若点在形内,则将该点到三顶点连线,计算这些连线与三角形各边夹角(当然要用余弦定理了),这些夹角的和应该等于大三角形的内角和,即180度,否则若不等,必在形外。法三是方向法,这是GIS教材上一道经典考试题,具体不做介绍。法四是垂心法,比较不好理解,也不做介绍。由于不想落于俗套,所以想找一种不常用而又简单的算法,于是晚上开启做梦模式。

          一晚上的梦没有想出来,早上却想起来三边长度判定是否出问题了?想了半天,任意两边之和大于第三边,任意两边之差小于第三边,这两个条件到底用不用同时满足呢?

    走到半路,就想出啦,就是个不等式的变换:

    a+b>c          =>          c-b<a  ;  c-a<b

    b+c>a          =>          a-c<b  ;  a-b<c

    a+c>b          =>          b-c<a  ;  b-a<c

    上面每个式子都能推导出另外两个式子,也就是说,只要满足了任意两边之和大于第三边,那么任意两边之差必然小于第三边,这是隐含的,所以两个判定条件是等价的,只需满足其一即可。(这个问题说明,我的基础数学已经忘得差不多了,而往往基础的东西,越难完全理解和掌握)

    这说明我用来判断三角形能否形成的条件没错。下面继续想点和三角位置关系的算法。想起了昨晚无意中看到网上一个人的一句话:用斜率判断最直观了。

    当时没在意,到了公司就有了想法,这个思路是可行的,可是要怎么判定呢?画了画,有了思路,若D在ABC内,则直线AD的斜率必然介于AB和AC之间;同时BD斜率也必须介于BC和BA之间;并且DC斜率也必须同时介于CA和CB之间;否则D必将位于形外。根据这个思路,修改昨晚的代码并测试,如下:


    这次用同事提出的那个点在测试,就没有问题了。这个算法成立。反思一下,我昨天的思路到底为什会出问题呢?结合今天的代码来看,其实昨天的思路未必就不可行。只要修改某些逻辑连接符就能使昨天的代码正确。

    昨天判定的条件是(x4如果比max(x1,x2,x3)还大,或x4如果比min(x1,x2,x3)还小)或(y4如果比max(y1,y2,y3)还大或y4如果比min(y1,y2,y3)还小)则必在外部,即横纵坐标只要有一个超限,就在外面;思路是从反面考虑,认为分析的可以少一些,认为补集就在内部,但这种带有多个或连接的逻辑表达式,补集并不是在内部,而导致出错,那么这个思路就不能用吗?可以用,可以让X和Y同时满足不超限,那么这样的点D必在内部,这次它的补集就是外部。我们不可能找到一点,它的横纵坐标都不超限,却在外部的,这说明这个逻辑正确,算法可行。这个问题的本质是充分性和必要性的关系。些时候,逻辑关系正推和反推是不等价的,所以不能颠倒。

    这样,只需对昨晚代码进行简单地修改,只需修改点与三角形 拓扑关系判定的条件表达式就可以了,修改后代码如下:

    至此,这个算法通过实验的验证,被证明可行。

    展开全文
  • 有了这个原因我们就可以写一个非常快速就可以判断出结果的函数。 如果题目限制了N个整数的数据大小不能超过int型。那么我们算出斐波那契数列哪一项大于int的范围。 int 大于0的范围:0~2147483647...

    解决这个问题,可以用斐波那契数列(Fibonacci sequence)

    原因

    • 斐波那契数列中的数是不可能组成三角形的。
    • 而我们只要在这些数列里面加一个数就可以有一个三角形可以组成

    有了这个原因我们就可以写一个非常快速就可以判断出结果的函数。

    如果题目限制了N个整数的数据大小不能超过int型。那么我们算出斐波那契数列哪一项大于int的范围。

    int 大于0的范围:0~2147483647

    斐波那契数列第47项超过int

    所以假设输入的n有46个,这时候还没有超过int ,所以小于46的都要判断。

    当如果大于等于47个,由于第47个已经大于了int了,所以不可能取第47个,所以此时一定会有一个数,不是斐波那契数列中的数,此时就一定会有三个整数可以组成一个三角形。

     

    以下给出代码

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int a[1000];//存一堆整数
    
    int main()
    {
    	//关闭cin同步,此时速度会比scanf()还快。而且输入方便 
    	std::ios::sync_with_stdio(false);
    	int n;cin>>n;
    
    	int flag=0;
    
    	for(int i=0;i<n;i++)
    	     cin>>a[i];
    
    	if(n>=47) 
    	{ 
    		flag=1;
    		cout<<"YES";
    	} 
    	else
    	{
    		//这个排序是快排,排序后,前两项相加大于第三项一定可以组成一个三角形。
    		sort(a,a+n);
    		
    		for(int i=0;i<n-2;i++)//前两项之和大于第三项的判断。
    		{
    			if(a[i]+a[i+1]>a[i+2])
    			{
    				cout<<"YES";
    				flag=1;
    				break;
    			}
    		}
    	}
    	
    	if(flag==0)cout<<"NO";
    	return 0;
    }

     

    原创文章,如有错误请指出,谢谢。

    展开全文
  • 问题001-1:请对输入三个整数a,b,c,判断能否以它们为三个边长构成三角形。若能,输出YES和面积,否则输出NOa = float(input())b = float(input())c = float(input())if a > 0 and b > 0 and c > 0: #判断...

    问题001-1:请对输入三个整数a,b,c,判断能否以它们为三个边长构成三角形。若能,输出YES和面积,否则输出NO

    a = float(input())

    b = float(input())

    c = float(input())

    if a > 0 and b > 0 and c > 0: #判断边长是否为正

    if (a + b > c) and (a + c > b) and (b + c > a): #判断是否可以为三角形

    p = (a + b + c)/2.0

    S = (p*(p – a)*(p – b)*(p – c))**0.5 #面积,海伦公式

    print(“YES, 边长为: a = {},b = {},c = {}, 面积为:{}”.format(a,b,c,S))

    else:

    print(“NO”)

    else:

    print(“NO”)

    问题001-2:可逆素数是将某素数的各位数字顺序颠倒后仍为素数的数,请编程并输出200以内的可逆素数

    注意:1不是素数也不是合数

    def GetReNums(n):

    if ((n//100 ==0) & (n//10 ==0)):

    num1 = n

    num2 = n

    else:

    if ((n//100 ==0) & (n//10 !=0)):

    num1 = n

    num2 = n%10 * 10 + n//10

    else:

    num1 = n

    num2 = n%100%10 * 100 +n//10%10*10 +n//100

    return num1,num2

    for n in range(2,200,1):

    num1,num2 = GetReNums(n)

    devn1 = 0

    devn2 = 0

    for i in range(2,num1,1):

    if (num1%i ==0):

    devn1 = devn1+1

    for i in range(2,num2,1):

    if (num2%i ==0):

    devn2 = devn2+1

    if ((devn1==0)&(devn2==0)):

    print(n)

    【每日道代码题001】- PYTHON基础复习

    展开全文
  • 八年级数学下册:什么是函数...1、判断下列哪些是函数,哪些不是函数y=2x y=3x-4 y= y= y=x² y=y= =x y²=x2、求自变量x取值范围。Y=4x y=3x² y=-2x-3 y= y=Y= y= y=3、三角形周长为Ycm,三边长为4cm、6cm、Xc...

    八年级数学下册:什么是函数,函数如何解决实际问题

    函数

    一、定义:如果有两个变量x与y,对于x的每一个确定的值,y都有唯一的值与其对应,那么y是x的函数。

    1、判断下列哪些是函数,哪些不是函数

    y=2x y=3x-4 y= y= y=x² y=

    y= =x y²=x

    2、求自变量x的取值范围。

    Y=4x y=3x² y=-2x-3 y= y=

    Y= y= y=

    3、三角形的周长为Ycm,三边长为4cm、6cm、Xcm,则以X为自变量表示Y的函数关系式子为_______,自变量X的取值范围是_______。

    4、矩形的周长为30,则面积y与一条边长为x之间的函数关系式为_______,其中x的取值范围是_______。

    5、一个小球由静止开始在一个斜坡向下滚动,其速度每秒增加2米,则小球的速度v随时间t的变化的函数关系式为_______;第2.5秒时小球的速度为_______。

    6、文汇从甲地向乙地打长途,不超过3分钟,收费为2.4元。以后每超过一分钟加收1元,则付话费y元与通话时间t分钟(t≥3,且t是整数)之间的函数关系为_______;若通话时间为2分钟,则收费为_______元,若y=4.4,则t=_______

    7、某商店售货时,在进价的基础上加一定利润,其数量与售价如下表:

    根据上表

    (1)请写出y与x的函数关系式,并指出常量与变量。

    (2)求出当数量为6.5kg、8kg时,售价分别是?

    582230ea4fe42394e53137149f5aaacc.png
    f6eddac9b6520bf32cc8541298a3f883.png
    展开全文
  • 确定每个三角形点可能出现的范围 其实也比较简单,就是用个框框,包裹着这个三角形,那么三角形内部点,肯定在这个范围内.我们找到了这个框框,下一步就是把框框内的每个点范围一下,用个算法计算一下是否在指定的三角形...
  •  4.4.3 数学及三角函数 4.4.4 统计函数 4.4.5 查看和引用函数 4.4.6 数据库函数 4.4.7 文本函数 4.4.8 逻辑函数 4.4.9 信息函数 4.4.10 用户定义函数 4.4.11 工程函数 4.4.12 立方函数 4.4.13 其他...
  •  4.4.3 数学及三角函数 4.4.4 统计函数 4.4.5 查看和引用函数 4.4.6 数据库函数 4.4.7 文本函数 4.4.8 逻辑函数 4.4.9 信息函数 4.4.10 用户定义函数 4.4.11 工程函数 4.4.12 立方函数 4.4.13 其他...
  • 第2章 数学和三角函数 46 2.1 常规计算 48 2.1.1 SIGN——返回数字符号 48 2.1.2 ABS——计算数字绝对值 49 2.1.3 SUM——计算数字之和 50 2.1.4 PRODUCT——计算数字之积 52 2.1.5 SQRT——计算正平方根 ...
  • 2020.08.11C语言分享●●●#01#前言C语言案例---水仙花数输出...C语言案例---判断三角形类型 --if 语句应用1、用for遍历所有三位数整数取值范围,既:100〜9992、利用取模和除法求得该数个十百上取值,用该三...
  • react 实现div缩放、旋转、拖拽的9个控制点 ...旋转功能是通过三角函数计算鼠标拖动后的角度。动态修改元素的rotate 画板(舞台) 想要对元素进行控制。 我们先定义一个画板,规定元素只能在指定的范围内变化。 然后在
  • 计算几何(基础部分)计算几何注意点与向量模板点与线直线定义线段与射线点与线模板多边形三角形三角形...使用反三角函数时,要注意定义域的范围,比如,经过计算 x = 1.000001 double x = 1.000001; double acx = a
  • 错题记录 函数题 习题5-6 使用函数输出水仙花... 使用函数输出指定范围Fibonacci数 编程题 练习3-5 输出闰年 习题3-2 高速公路超速处罚 习题3-3 出租车计价 习题3-5 三角形判断 习题4-3 求分数序列前N项和
  • excel使用

    2012-11-25 17:06:01
    (1) 分数输入如果直接输入“1/5”,系统会将其变为“1月5日”,解决办法是:先输入“0”,然后输入空格,再...用“插入”-“函数”命令打开“粘贴函数”对话框(如图11),选中函数分类栏中“数学与三角函数”...
  • 同学打包代码

    2012-06-22 13:48:26
    3、判断三角形种类(一般三角形、等腰三角形、等边三角形、直角三角形和不能构成三角形); 4、计算并输出三角形面积 。 12、几何体表面积与体积 一、定义一个抽象类形状(shape),包含输入基本图形...
  • 在△ABC中,已知A=30°,a=5,b=113,解此三角形,得到三角形个数为()A.0B.1C.2D.3若函数f(x+1)=-f(x),当x∈(0,1]时,f(x)=x,若g(x)=f(x)-mx-m在区间[-1,1]内恰有一个零点,则实数m取值范围是小明...
  • LINGO软件学习

    2009-08-08 22:36:50
    #eq#是逻辑运算符,用来判断是否“相等”,可参考§4. &1可看作派生集第1个原始父集索引,它取遍该原始父集所有成员;&2可看作派生集第2 个原始父集索引,它取遍该原始父集所有成员;&3,&4,……,...
  • 2019年4月21日C++学习

    2019-04-21 21:28:56
    最近做题的时候发现思路还是不好,比如在一道判断是否能构成三角形的题目中,由于数据量很大,无法通过大量的循环求解,但若是想到斐波那契数列,因为其特殊性,其每三个都是刚好构不成三角形,在其规定的范围内可以...
  • Python3 菜鸟查询手册

    2018-06-01 07:25:51
    07.28 三角函数 degrees() 函数.png 07.29 三角函数 radians() 函数.png 08 字符串.png 08.01 字符串内建函数 capitalize()方法.png 08.02 字符串内建函数 center()方法.png 08.03 字符串内建函数 count()方法...
  • 2、定义一个集判断和绘制于一体的函数GetBaseTrian() 105 3、划分三角网 106 4、错误处理 107 实例20 Delaunay三角剖分 110 1、获取点集坐标数组 110 2、获取点集外围边界 111 3、根据边界及内部点生成三角网 114 ...
  • java常用工具类使用

    热门讨论 2012-03-19 20:11:37
    格式化目的是把一个对象以不同格式表示,以满足不同环境对格式要求,比如:前面学习Date对象实质是一个以毫秒值表示时间,但是在不同国家和地区表示方式不一样。那么就需要对Date进行格式化处理。接下来...
  • Python案例集锦-0414.docx

    2018-11-27 23:23:22
    程序11:输出指定范围的素数(else语句) 9 程序12:生成日历 10 程序13:统计字符串中字符 11 程序14:文件读取 12 程序15:十进制转二进制、八进制、十六进制 13 程序16: 生成10个两位随机素食 13 程序17:...
  • 由于人体指纹的长期不变性与唯一性,指纹识别技术已经成为生物识别技术领域应 最广泛的技术,通过指纹特征来鉴别人身份的技术正得到...,通过指定方法查找在误差允许的范围之内全等的两个三角形;二是根据两个三角形
  • Gauss消去法、Gauss列主元消去法、Gauss全主元消去法、列主元消去法应用『列主元求逆矩阵、列主元求行列式、矩阵的三角分解』、LU分解法、平方根法、改进平方根法、追赶法(解三对)、列主元三角分解法;...
  • 实例206 反三角函数的使用 261 实例207 双曲函数使用 262 实例208 指数与对数运算 263 9.5 其他常用类使用 264 实例209 高精度整数运算 264 实例210 高精度浮点运算 265 实例211 七星彩号码生成器 266 实例212 ...
  • 实例206 反三角函数的使用 261 实例207 双曲函数使用 262 实例208 指数与对数运算 263 9.5 其他常用类使用 264 实例209 高精度整数运算 264 实例210 高精度浮点运算 265 实例211 七星彩号码生成器 266 实例212 ...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

判断三角函数角的范围