P5717 【深基3.习8】三角形分类题解

清风雪月

2021-09-22 18:54:22

Personal

无法提交题解题的题解

一个很适合练手的数学题

我们一共要判断六种情况,按照题目给出的

如果三条线段不能组成一个三角形,输出Not triangle;

如果是直角三角形,输出Right triangle;

如果是锐角三角形,输出Acute triangle;

如果是钝角三角形,输出Obtuse triangle;

如果是等腰三角形,输出Isosceles triangle;

如果是等边三角形,输出Equilateral triangle。

那么什么情况是无法组成三角形的呢? 我们知道,三角形的三条边(以a[1],a[2],a[3]代称),如果出现一条边大于或等于另外两条边的和,那么它就无法组成三角形

因此可以得出这个判断:

a[1]+a[2]<=a[3]||a[1]+a[3]<=a[2]||a[2]+a[3]<=a[1]\ 它代表判断任意两条边之和是否大于剩下一条边

直角、锐角、钝角则更好判断\ 当两短边的平方和大于一长边的平方,说明是锐角三角形。

当两短边的平方和等于一长边的平方,说明是直角三角形。

当两短边的平方和小于一长边的平方,说明是钝角三角形。

接着我们来看剩下两个

什么是等腰三角形?

等腰三角形就是有两条边相等的三角形

因此我们可以这样判断

a[1]==a[2]||a[2]==a[3]||a[3]==a[1]

那么只剩下等边三角形了

这个就更好判断了,只需要判断是否每条边都相等即可

写的时候一定要记住,要按顺序,如果你看懂了,要不先自己试试写写代码或者修改一下呢?\ 下面上代码(没有注释,想复制请先看一看解析再领代码哦

//柠月
#include<bits/stdc++.h>
using namespace std;
int a[4];
int main()
{
    cin>>a[1]>>a[2]>>a[3];
    sort(a+1,a+1+3);
    if(a[1]+a[2]<=a[3]||a[1]+a[3]<=a[2]||a[2]+a[3]<=a[1]){
        cout<<"Not triangle\n";
        return 0;
    }
    if(a[1]*a[1]+a[2]*a[2]==a[3]*a[3])cout<<"Right triangle\n";
    if(a[1]*a[1]+a[2]*a[2]>a[3]*a[3])cout<<"Acute triangle\n";
    if(a[1]*a[1]+a[2]*a[2]<a[3]*a[3])cout<<"Obtuse triangle\n";
    if(a[1]==a[2]||a[2]==a[3]||a[3]==a[1])cout<<"Isosceles triangle\n";
    if(a[1]==a[2]&&a[2]==a[3]&&a[1]==a[3])cout<<"Equilateral triangle\n";
    return 0;
}