精华内容
下载资源
问答
  • C语言,判断是否构成三角形代码
    千次阅读
    2021-04-23 12:58:55
    #include <stdio.h>
    int orsanjiaoxing(float n1, float n2, float n3);
    int orsanjiaoxing(float n1, float n2, float n3) {
        int a;
        a=(n1+n2) > n3 && (n1+n3)>n2 && (n3+n2)>n1? 1 :0;
        return a;
    }
    
    void main() {
        float n1, n2, n3;int a;
        printf("请输入第一个数;");
        scanf("%f", &n1);
        getchar();
        printf("请输入第二个数;");
        scanf("%f", &n2);
        getchar();
        printf("请输入第三个数;");
        scanf("%f", &n3);
        getchar();
        a = orsanjiaoxing(n1, n2, n3);
        a == 1?printf("可以构成三角形") :printf("不可以构成三角形");
    }

     

    更多相关内容
  • 主要介绍了Python判断三段线能否构成三角形代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 入的三个边长(正整型值),fun函数判断能否构成三角形,若能构成三角形则返回1,若不能构成三角形则返回0。判断方法是任意两边之和大于第三边则构成三角形,否则不能。例如,输入"12,4,9",则输出"可以构成三角形"。
  • #isdight()判断是否为数字型,下面通过索引判断’.'的左右两边是否为数字型 import math def judgeNumber(str):#判断字符串是否是数值类型,如果是返回True,负责返回False result=True if('.' in str): #是不是整数...

    1.定义方法

    #isdigit()判断是否为数字型,下面通过索引判断’.'的左右两边是否为数字型

    import math
    def judgeNumber(str):#判断字符串是否是数值类型,如果是返回True,负责返回False
        result=True
        if('.' in str): #是不是整数类型
            s = str.split(".")
            if(len(s)==2):
                 if((s[0].isdigit()==True and s[1].isdigit()==True)==False):
                     result=False
            else:
                result=False
        elif(str.isdigit()==False):
                result=False
        return result
    

    2.方法传参最终执行

    while True:
        a=(input("请输入三角形的第一条边:"))
        b=(input("请输入三角形的第二条边:"))
        c=(input("请输入三角形第三条边:"))
        if(judgeNumber(a) and judgeNumber(b) and judgeNumber(c)):
                a1=float(a)
                b1=float(b)
                c1=float(c)
                print("计算三角形面积,请输入数字类型")
                if(a1+b1>c1 and a1+c1>b1 and c1+b1>a1):
                   s=(a1+b1+c1)/2
                   area=math.sqrt(s*(s-a1)*(s-b1)*(s-c1))
                   print("三角形的面积是{}".format(area))
                   break
                else:
                    print("任意两边之和没有大于第三边")
        print("数据错误")
    
    展开全文
  • 判断三角形的类型
  • 判断能否构成三角形C++

    千次阅读 2021-08-02 12:27:29
    判断能否构成三角形 题目描述 输入三角形的三条边a、b、c的值,判断能否构成三角形。 输入 输入3个整数,表示三条边长,判断能否构成三角形。 输出 如果能构成三角形,则输出Yes;不能,则输出No。 样例输入 【输入...

    判断能否构成三角形

    题目描述
    输入三角形的三条边a、b、c的值,判断能否构成三角形。

    输入
    输入3个整数,表示三条边长,判断能否构成三角形。

    输出
    如果能构成三角形,则输出Yes;不能,则输出No。

    样例输入
    输入样例1
    3 4 5

    输入样例2
    10 20 50
    样例输出
    输出样例1
    Yes

    输出样例2
    No
    代码

    #include<iostream>
    using namespace std;
    int main()
    {
         long long a,b,c;
         cin>>a>>b>>c;
         if(a+b>c&&a+c>b&&b+c>a)
    	 {
    	 	cout<<"Yes"<<endl;
         }
          else cout<<"No"<<endl;
        return 0;
    }
    
    展开全文
  • 题目描述: 如何判断一个点是否在一个三角形内。测试样例:自定义的POINT类:class POINT{ int x; int y; public POINT(int x,int y){ this.x = x; this.y = y; }}思路一:面积法: 如果一个点在三角形内,其与...

    题目描述:

    如何判断一个点是否在一个三角形内。

    测试样例:

    f81840337a4ddb4e8aaff9179cc47fb2.png

    自定义的POINT类:

    class POINT{

    int x;

    int y;

    public POINT(int x,int y){

    this.x = x;

    this.y = y;

    }

    }

    思路一:

    面积法:

    如果一个点在三角形内,其与三角形的三个点构成的三个子三角形的面积等于大三角形的面积。否则,大于大三角形的面积。

    所以,这个问题就转化成如何在知道三角形的三个点的情况下,求这个三角形的面积的问题了。

    因为所有点的坐标已知,我们有几种方式计算面积:

    1)首先可以计算出每条边的长度及周长,我们就可以利用海伦公式计算面积,然后进行比较。

    S=p(p−a)(p−b)(p−c)−−−−−−−−−−−−−−−−−√ S = sqrt{p(p-a)(p-b)(p-c)}

    S=

    p(p−a)(p−b)(p−c)

    p=(a+b+c)2 p = frac{(a+b+c)}{2}

    p=

    2

    (a+b+c)

    2)向量法:先求出这个三角形的对应的平行四边形的面积。然后这个面积的1/2就是三角形的面积了。

    先随意选择两个点,如B、C通过其坐标相减得向量(B,C)。记得谁减另一个就是指向谁。然后求出其中一个点和剩下一个点的向量。这两个向量的叉乘的便是平行四边形的面积。除以2就是三角形的面积。(注意这里是叉乘 (cross product),而非点乘(dot product))。

    (补充)向量之间的积分为两种:叉乘和点乘。叉乘求面积,点乘求投影。这是两者的意义。而且,叉乘理论得到的是一个向量,而点乘得到的是一个标量。

    代码:

    private static final double ABS_DOUBLE_0 = 0.0001;

    public static boolean isInTriangle(POINT A, POINT B, POINT C, POINT P) {

    double ABC = triAngleArea(A, B, C);

    double ABp = triAngleArea(A, B, P);

    double ACp = triAngleArea(A, C, P);

    double BCp = triAngleArea(B, C, P);

    double sumOther = ABp + ACp + BCp;

    if (-ABS_DOUBLE_0 < (ABC - sumOther) && (ABC - sumOther) < ABS_DOUBLE_0) { // 若面积之和等于原三角形面积,证明点在三角形内

    return true;

    } else {

    return false;

    }

    }

    private static double triAngleArea(POINT A, POINT B, POINT C) { // 由三个点计算这三个点组成三角形面积

    POINT ab,bc;

    ab = new POINT(B.x - A.x,B.y - A.y);//

    bc = new POINT(C.x - B.x,C.y - B.y);

    return Math.abs((ab.x * bc.y - ab.y * bc.x) / 2.0);

    }

    思路二:

    同向法:

    假设点P位于三角形内,会有这样一个规律,当我们沿着ABCA的方向在三条边上行走时,你会发现点P始终位于边AB,BC和CA的右侧。我们就利用这一点,但是如何判断一个点在线段的左侧还是右侧呢?我们可以从另一个角度来思考,当选定线段AB时,点C位于AB的右侧,同理选定BC时,点A位于BC的右侧,最后选定CA时,点B位于CA的右侧,所以当选择某一条边时,我们只需验证点P与该边所对的点在同一侧即可。问题又来了,如何判断两个点在某条线段的同一侧呢?可以通过叉积来实现,连接PA,将PA和AB做叉积,再将CA和AB做叉积,如果两个叉积的结果方向一致,那么两个点在同一测。

    0f9394c8cd926bcfa7a7885ce418e6e8.png

    代码:

    public static boolean isInTriangle(POINT A, POINT B, POINT C, POINT P) {

    /*利用叉乘法进行判断,假设P点就是M点*/

    int a = 0, b = 0, c = 0;

    POINT MA = new POINT(P.x - A.x,P.y - A.y);

    POINT MB = new POINT(P.x - B.x,P.y - B.y);

    POINT MC = new POINT(P.x - C.x,P.y - C.y);

    /*向量叉乘*/

    a = MA.x * MB.y - MA.y * MB.x;

    b = MB.x * MC.y - MB.y * MC.x;

    c = MC.x * MA.y - MC.y * MA.x;

    if((a <= 0 && b <= 0 && c <= 0)||

    (a > 0 && b > 0 && c > 0))

    return true;

    return false;

    }

    思路三:

    重心法:

    我们都知道,三角形的三个点在同一个平面上,如果选中其中一个点,其他两个点不过是相对该点的位移而已,比如选择点A作为起点,那么点B相当于在AB方向移动一段距离得到,而点C相当于在AC方向移动一段距离得到。

    491bdc839bbb39fe479f4f8830a49d65.png

    所以对于平面内任意一点,都可以由如下方程来表示。

    P=A+u∗(C−A)+v∗(B−A) P = A + u * (C-A) + v * (B-A)

    P=A+u∗(C−A)+v∗(B−A)

    如果系数u或v为负值,那么相当于朝相反的方向移动,即BA或CA方向。那么如果想让P位于三角形ABC内部,u和v必须满足什么条件呢?有如下三个条件:

    u >= 0

    v >= 0

    u + v <= 1

    几个边界情况:

    当u = 0,v = 0 时,就是点A;

    当u = 0,v = 1 时,就是点B;

    当u = 1,v = 0 时,就是点C。

    整理方程1得到:

    P−A=u(C−A)+v(B−A) P-A = u(C-A) + v(B-A)

    P−A=u(C−A)+v(B−A)

    令 v0 = C – A, v1 = B – A, v2 = P – A,则

    v2=u∗v0+v∗v1 v2 = u * v0 + v * v1

    v2=u∗v0+v∗v1

    现在是一个方程,两个未知数,无法解出u和v,所以将等式两边分别点乘v0和v1的到两个等式:(ps.下面公式中的·符号代表“点乘”)

    (v2)⋅v0=(u∗v0+v∗v1)⋅v0 (v2)·v0 = (u * v0 + v * v1)·v0

    (v2)⋅v0=(u∗v0+v∗v1)⋅v0

    (v2)⋅v1=(u∗v0+v∗v1)⋅v1 (v2)·v1 = (u * v0 + v * v1)·v1

    (v2)⋅v1=(u∗v0+v∗v1)⋅v1

    注意到这里u和v是数,而v0,v1和v2是向量,所以可以将点积展开得到下面的式子。

    v2⋅v0=u∗(v0⋅v0)+v∗(v1⋅v0) v2·v0 = u * (v0·v0) + v * (v1·v0)

    v2⋅v0=u∗(v0⋅v0)+v∗(v1⋅v0)

    v2⋅v1=u∗(v0⋅v1)+v∗(v1⋅v1) v2·v1 = u * (v0·v1) + v * (v1·v1)

    v2⋅v1=u∗(v0⋅v1)+v∗(v1⋅v1)

    解这个方程得到:

    u=((v1⋅v1)(v2⋅v0)−(v1⋅v0)(v2⋅v1))/((v0⋅v0)(v1⋅v1)−(v0⋅v1)(v1⋅v0)) u = ((v1·v1)(v2·v0)-(v1·v0)(v2·v1)) / ((v0·v0)(v1·v1) - (v0·v1)(v1·v0))

    u=((v1⋅v1)(v2⋅v0)−(v1⋅v0)(v2⋅v1))/((v0⋅v0)(v1⋅v1)−(v0⋅v1)(v1⋅v0))

    v=((v0⋅v0)(v2⋅v1)−(v0⋅v1)(v2⋅v0))/((v0⋅v0)(v1⋅v1)−(v0⋅v1)(v1⋅v0)) v = ((v0·v0)(v2·v1)-(v0·v1)(v2·v0)) / ((v0·v0)(v1·v1) - (v0·v1)(v1·v0))

    v=((v0⋅v0)(v2⋅v1)−(v0⋅v1)(v2⋅v0))/((v0⋅v0)(v1⋅v1)−(v0⋅v1)(v1⋅v0))

    代码

    private static boolean isInTriangle(POINT p, POINT a, POINT b, POINT c) {

    POINT AB, AC, AP;

    AB = new POINT(b.x - a.x, b.y - a.y);

    AC = new POINT(c.x - a.x, c.y - a.y);

    AP = new POINT(p.x - a.x, p.y - a.y);

    float dot00 = dotProduct(AC, AC);

    float dot01 = dotProduct(AC, AB);

    float dot02 = dotProduct(AC, AP);

    float dot11 = dotProduct(AB, AB);

    float dot12 = dotProduct(AB, AP);

    float inverDeno = 1 / (dot00 * dot11 - dot01 * dot01);

    // 计算重心坐标

    float u = (dot11 * dot02 - dot01 * dot12) * inverDeno;

    float v = (dot00 * dot12 - dot01 * dot02) * inverDeno;

    return (u >= 0) && (v >= 0) && (u + v < 1);

    }

    private static float dotProduct(POINT p1, POINT p2) {

    return p1.x * p2.x + p1.y * p2.y;

    }

    点击“java架构”

    展开全文
  • 原博文2018-08-10 17:11 −任意输入3个数,判断能否组成三角形。 三角形:两边之和大于第三边 直角三角形:勾股定理 代码如下: # 输入合法性检查,必须输入正数,不支持科学计数法'''try: except : #如果在try部份...
  • 输入任意三个数,判断能否构成三角形。 */ import java.util.Scanner; public class Test10 { public static void main(String[] args) { Scanner AA = new Scanner(System.in); System.out.println(“输...
  • 2015年07月18 -任意输入3个数,判断能否组成三角形,并输出三角形为等边/等腰/直角/普通三角形. 三角形:两边之和大于第三边 直角三角形:勾股定理#!/usr/bin/python# -*- coding:utf-8 -*-#输入合法性检查,必须输入正数...
  • C语言判断三条边能否构成三角形

    万次阅读 2019-03-17 13:01:45
    算法基础: 两边之和大于第三边,并且两边之差...功能:判断三条边能否构成一个三角形 输入示例: 2 3.1 4 5 1 2 3 输出示例: Yes No ----------------------------------- Author: Zhang Kaizhou Date: 2019-3-17 ...
  • 从键盘输入三个整数,判断能否构成三角形 提示:三角形判断条件:任意两边之和大于第三边。 代码如下(示例): public static void main(String[] args) { java.util.Scanner scanner=new Scanner(System.in); ...
  • 总结:判断构成三角形的条件:①已知三条线段的长,只要最短两条线段长度的和大于第三条线段的长度,即可判定其能构成三角形;②已知两边,求三角形周长时,此时一定要利用三边关系先判断第三边长度的范围,再计算...
  • 题目:vb三角形编程输入三条边,判断能否构成三角形.看我的编程是否有问题,Dim A=Val(InputBox("请输入a") ) B=Val(InputBox("请输入b") ) C=Val(InputBox("请输入c") ) Ifa+ b >c and a+c >b and b+c>a ...
  • java - 判断三边能否组成三角形

    千次阅读 2020-02-05 10:18:05
    1.代码: 2.实现结果:
  • 判断是否构成三角形

    2021-11-09 15:13:53
    给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。 解体思路:构成三角形的要求是,两边之和大于第三条边,读者根据这个准则判定即可。 C语言源代码演示: #include<...
  • //判断输入的能否构成三角形以及类型 } public static void isTrigon(double a, double b, double c) { if(a || b || c ){//如果有小于0的边长,显然不行 System.out.println("Can't"); return; } if (a + b > c && ...
  • 问题描述:输入三角形三条边,判断三角形是等边三角形、等腰三角形、直角三角形、锐角三角形、钝角三角形中的那种? 要求:1、用java语言编码,要有界面;2、提交代码和测试截图。
  • 判断三个数能否组成三角形

    千次阅读 2020-08-27 17:11:08
    # 定义函数判断输入内容为正数 def ispositive(num): try: float(num) except ValueError as e: print('输入内容不是数字') else: if float(num) <= 0: print('输入内容不是正数') else: return True ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,626
精华内容 8,650
关键字:

判断能否构成三角形的代码