P5717 【深基3.习8】三角形分类
2021/10/21 23:42:00
本文主要是介绍P5717 【深基3.习8】三角形分类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
给出三条线段 a,b,c 的长度,均是不大于 10000 的整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
输出要求:
如果三条线段不能组成一个三角形,输出Not triangle;
如果是直角三角形,输出Right triangle;
如果是锐角三角形,输出Acute triangle;
如果是钝角三角形,输出Obtuse triangle;
如果是等腰三角形,输出Isosceles triangle;
如果是等边三角形,输出Equilateral triangle。
如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
说明/提示
当两短边的平方和大于一长边的平方,说明是锐角三角形。
当两短边的平方和等于一长边的平方,说明是直角三角形。
当两短边的平方和小于一长边的平方,说明是钝角三角形。
#include<bits/stdc++.h> using namespace std; int main() { int a=0, b=0, c=0; int arr[3] = { a,b,c }; for (int i = 0; i < 3; i++) { cin >> arr[i]; }//输入a,b,c三条边 for (int i = 0; i < 2; i++) { for (int j = 0; j < 2-i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } }//由于后面的判断需要用到两条短边,所以运用了冒泡排序,这样下标0和1的就是两条短边 } int A = arr[0]; int B = arr[1]; int C = arr[2]; if (A+B<=C||A+C<=B||B+C<=A) {//不能构成三角形的情况 cout << "Not triangle" << endl; } else {//能构成的情况 if (A * A + B * B == C * C) { cout << "Right triangle" << endl; } else if (A * A + B * B > C * C) { cout << "Acute triangle" << endl; } else if (A * A + B * B < C * C) {//锐角钝角直角的判断 cout << "Obtuse triangle" << endl; } if (A == B || A == C || B == C) {//独立于上面三个角之外的等边 cout << "Isosceles triangle" << endl; } if (A == B && A == C) {//独立于上面三个角之外的等腰 cout << "Equilateral triangle" << endl; } } cout << endl; system("pause"); return 0; }
学习过程:因为是小白,刚刚开始学习C++,对很多语法没有学到也没有运用熟练,所以很笨重地选择通过冒泡排序法,通过这个得到两个短边,因为锐角钝角直角判断都需要用到两个短边。然后根据题目给的条件来判断三角形,我在头几次做的时候,等边和等腰前都用的else if,和钝角直角锐角混在一起了,导致在同时满足条件是,只输出了一个,我这个方法比较泵,虽然也通过了题目,但我还是继续学,尽量找到更好的方法来解决问题。
这篇关于P5717 【深基3.习8】三角形分类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南