洛谷P5717 【深基3.习8】三角形分类(C++)

思路:1.首先判断是否为三角形。判断方法:任意两边之和大于第三边,两边之差小于第三边。

再优化一下:两小边之和大于的三边,(因为最长边与其他任意一条边的和一定大于剩下那条边)

最长边-其他两条边中的一条<剩下的一条边(其他两条较小边本身就小于最长边,相减之和就更加小与了)。(当然也可以枚举每一种情况)

#include<iostream>

using namespace std;

bool istri(int a, int b, int c)//判断是否构成三角形
{
	if (a + b > c)
	{
		if (c - a < b)return true;
		if (c - b < a)return true;
	}
	return false;
}
int main()
{
	int a[3];
	for (int i = 0;i < 3;i++)cin >> a[i];
	for (int i = 0;i < 2;i++)//交换排序
	{
		for (int j = i + 1;j < 3;j++)
		{
			if (a[i] > a[j])
			{
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	if (!istri(a[0], a[1], a[2]))
	{//不是三角形的情况
		cout << "Not triangle";
		return 0;
	}
  //对每一种三角形的情况进行分析
	if ((a[0] * a[0] + a[1] * a[1]) == (a[2] * a[2]))
	{
		cout << "Right triangle" << endl;
	}
	if (a[0] * a[0] + a[1] * a[1] > a[2] * a[2])
	{
		cout << "Acute triangle" << endl;
	}
	if (a[0] * a[0] + a[1] * a[1] < a[2] * a[2])
	{
		cout << "Obtuse triangle" << endl;
	}
	if (a[0] == a[1] || a[0] == a[2] || a[1] == a[2])
	{
		cout << "Isosceles triangle" << endl;
	}
	if (a[0] == a[1] && a[1] == a[2] && a[2] == a[0])
	{
		cout << "Equilateral triangle" << endl;
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值