运用类判断三角形的形状

先看题目:定义一个Triangle三角形类,包括数据成员三边边长(int类型)、判断三角形形状的成员函数。键盘输入三角形三边边长,判断此三角形形状(其中,等腰直角三角形归为等腰三角形类)。 构成等边三角形,输出“A equileteral triangle”; 构成等腰三角形,输出“A isosceles triangle”; 构成直角三角形,输出“A right triangle”; 构成三角形,但不是以上三种,则输出“A triangle”; 不构成,输出“Not a triangle”。

其实就是和那个if-else的类型但是要求要用类来做那我们就用类吧。

这个题目干预我写完的原因是 if-else语句里面,他是逐行逐行的进行判断,所以对三角形的分类标准需要思考思考。

一开始先想应该先判断是不是三角形然后再开始细分,但是要是三角形的话直接就输出来了,所以这个应该放在最后判断。

然后就从等边--等腰--直角--三角形--非三角,就好了

好像又和类没啥关系,离谱

然后为了方便判断,就先给三个边进行一些冒泡排序,方便按照边长判断形状

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cassert>
#include<iomanip>//控制精度的,以及各种格式
#include<math.h>//各种数学公式
#include<locale>
//很多头文件都是我一块用的就没删,有些也不是必须
using namespace std;
class Triangle {
public:
	int a, b, c;

	string predict() {
		int a1[3] = { a,b,c };
		for (int i = 0; i < 3-1;i++) {
			for (int j = 0; j < 3 - 1 - i; j++) {
				if (a1[j]>a1[j+1]) {
					int temp = a1[j];
					a1[j] = a1[j + 1];
					a1[j + 1] = temp;
				}
			}
		}
		//先判断是不是三角形
		if(a1[0]+a1[1]<=a1[2]){
			string i = "Not a triangle";
			return i;
		}
		else {
			if (a1[0] == a1[1] && a1[1] == a1[2]) {
				string i = "A equileteral triangle";
				return i;
			}

			else if (a1[0] == a1[1] || a1[1] == a1[2]) {
				string i = "A isosceles triangle";
				return i;
			}
			else if (a1[0] * a1[0] + a1[1] * a1[1] == a1[2] * a1[2]) {
				string i = "A right triangle";
				return i;
			}
			else{
				string i = "A triangle";
				return i;
			}
		}
	}
};
int main() {
	Triangle b1;
	cin >> b1.a >> b1.b >> b1.c;
	
	cout << b1.predict();
}

呃呃大概就是这样,思路要是不好不要来骂我,我就是给我的作业和我的想法存个档。

如果你有更优解,欢迎告诉我!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值