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

题目

题目描述

给出三条线段 a,b,c 的长度,均是不大于 1000010000 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?

  • 如果三条线段不能组成一个三角形,输出 Not triangle
  • 如果是直角三角形,输出 Right triangle
  • 如果是锐角三角形,输出 Acute triangle
  • 如果是钝角三角形,输出 Obtuse triangle
  • 如果是等腰三角形,输出 Isosceles triangle
  • 如果是等边三角形,输出 Equilateral triangle

如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。

输入格式

输入 3 个整数 a、b 和 c。

输出格式

输出若干行判定字符串。

输入输出样例

输入 #1

3 3 3

输出 #1

Acute triangle
Isosceles triangle
Equilateral triangle

输入 #2

3 4 5

输出 #2

Right triangle

输入 #3

6 10 6

输出 #3

Obtuse triangle
Isosceles triangle

输入 #4

1 14 5

输出 #4

Not triangle

说明/提示

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

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

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

思路

判断是否为三角形(使用三边关系) 

        三角形的三边关系为 a+b>c(或|a-b|<c)

        若不是,就输出"Not triangle"

        如果是三角形,判断种类 

        1.用角的关系来判断种类(勾股定理和余弦定理)

            直角三角形的三边关系为 a^2+b^2=c^2(a、b为直角边,c为斜边)

            如果此条件成立,输出 "Right triangle"

            锐角三角形和钝角三角形的就肯定是 a^2+b^2<c^2 和 a^2+b^2>c^2 了

            之后输出 "Acute triangle" 或者 "Obtuse triangle" 即可

        2.用边的关系来判断种类(等量关系)

            等腰三角形任意两边相等,判断条件也就是 a==b||a==c||b==c 了

            等边三角形三边相等, 就是说 a==b&&b==c

代码

代码如下(无注释):

#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a>c) swap(a,c);
	if(b>c) swap(b,c);
	if(a+b<=c){
		cout<<"Not triangle";
	}else{
		if(pow(a,2)+pow(b,2)==pow(c,2)){
			cout<<"Right triangle"<<endl;
		}else if(pow(a,2)+pow(b,2)>pow(c,2)){
			cout<<"Acute triangle"<<endl;
		}else if(pow(a,2)+pow(b,2)<pow(c,2)){
			cout<<"Obtuse triangle"<<endl;
		}
		if(a==b||a==c||b==c){
			cout<<"Isosceles triangle"<<endl;
		}if(a==b&&b==c){
			cout<<"Equilateral triangle"<<endl;
		}
	}
	
	return 0;
}

(有注释):

#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
using namespace std;
//【深基3.习8】三角形分类
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	//将最长的边放在最后 
	if(a>c) swap(a,c);
	if(b>c) swap(b,c);
	//判断是否为三角形(使用三边关系) 
	if(a+b<=c){
		cout<<"Not triangle";
	}else{    //如果是三角形,判断种类 
		//用角的关系来判断种类(勾股定理和余弦定理)
		if(pow(a,2)+pow(b,2)==pow(c,2)){
			cout<<"Right triangle"<<endl;
		}else if(pow(a,2)+pow(b,2)>pow(c,2)){
			cout<<"Acute triangle"<<endl;
		}else if(pow(a,2)+pow(b,2)<pow(c,2)){
			cout<<"Obtuse triangle"<<endl;
		}
		//用边的关系来判断种类 
		if(a==b||a==c||b==c){    //如果等腰 
			cout<<"Isosceles triangle"<<endl;
		}if(a==b&&b==c){    //如果等边(等边三角形是特殊的等腰三角形,所以不能用"else if")
			cout<<"Equilateral triangle"<<endl;
		}
	}
	
	return 0;    //你学会了吗?
}

第二次写题解,有任何问题或建议记得留在评论区!

  :3==)    (这是一个流鼻涕的表情包,看出来了吗)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值