两种方法编写程序,输入三角形的三条边,判断是否能够成三角形,如果能够成 三角形,输入构成的是等腰三角形、等边三角形、直角三角形,还是普通的三角 形。考虑整型、小数等不同类型数的三角形。 方法 1 函数原型:int getType(int a, int b, int c); int getType(double a, double b, double c); 方法 2 函数模板原型: template<typename T> int getType(T a, T b, T c)
时间: 2024-01-06 10:03:38 浏览: 30
方法1实现如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int getType(int a, int b, int c) {
if (a + b <= c || a + c <= b || b + c <= a) { // 判断是否能够成三角形
return -1; // 不能成三角形,返回-1
} else if (a == b || a == c || b == c) { // 判断是否等腰三角形
if (a == b && b == c) { // 判断是否等边三角形
return 2; // 等边三角形,返回2
} else {
return 1; // 等腰三角形,返回1
}
} else if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(b, 2) || pow(b, 2) + pow(c, 2) == pow(a, 2)) { // 判断是否直角三角形
return 3; // 直角三角形,返回3
} else {
return 0; // 普通三角形,返回0
}
}
int getType(double a, double b, double c) {
if (a + b <= c || a + c <= b || b + c <= a) { // 判断是否能够成三角形
return -1; // 不能成三角形,返回-1
} else if (a == b || a == c || b == c) { // 判断是否等腰三角形
if (a == b && b == c) { // 判断是否等边三角形
return 2; // 等边三角形,返回2
} else {
return 1; // 等腰三角形,返回1
}
} else if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(b, 2) || pow(b, 2) + pow(c, 2) == pow(a, 2)) { // 判断是否直角三角形
return 3; // 直角三角形,返回3
} else {
return 0; // 普通三角形,返回0
}
}
int main() {
cout << getType(3, 4, 5) << endl; // 直角三角形,输出3
cout << getType(2, 2, 3) << endl; // 等腰三角形,输出1
cout << getType(1, 1, 1) << endl; // 等边三角形,输出2
cout << getType(1, 2, 3) << endl; // 普通三角形,输出0
cout << getType(1, 2, 4) << endl; // 不能成三角形,输出-1
cout << getType(3.0, 4.0, 5.0) << endl; // 直角三角形,输出3
cout << getType(2.0, 2.0, 3.0) << endl; // 等腰三角形,输出1
cout << getType(1.0, 1.0, 1.0) << endl; // 等边三角形,输出2
cout << getType(1.0, 2.0, 3.0) << endl; // 普通三角形,输出0
cout << getType(1.0, 2.0, 4.0) << endl; // 不能成三角形,输出-1
return 0;
}
```
方法2实现如下:
```c++
#include <iostream>
#include <cmath>
using namespace std;
template<typename T>
int getType(T a, T b, T c) {
if (a + b <= c || a + c <= b || b + c <= a) { // 判断是否能够成三角形
return -1; // 不能成三角形,返回-1
} else if (a == b || a == c || b == c) { // 判断是否等腰三角形
if (a == b && b == c) { // 判断是否等边三角形
return 2; // 等边三角形,返回2
} else {
return 1; // 等腰三角形,返回1
}
} else if (pow(a, 2) + pow(b, 2) == pow(c, 2) || pow(a, 2) + pow(c, 2) == pow(b, 2) || pow(b, 2) + pow(c, 2) == pow(a, 2)) { // 判断是否直角三角形
return 3; // 直角三角形,返回3
} else {
return 0; // 普通三角形,返回0
}
}
int main() {
cout << getType(3, 4, 5) << endl; // 直角三角形,输出3
cout << getType(2, 2, 3) << endl; // 等腰三角形,输出1
cout << getType(1, 1, 1) << endl; // 等边三角形,输出2
cout << getType(1, 2, 3) << endl; // 普通三角形,输出0
cout << getType(1, 2, 4) << endl; // 不能成三角形,输出-1
cout << getType(3.0, 4.0, 5.0) << endl; // 直角三角形,输出3
cout << getType(2.0, 2.0, 3.0) << endl; // 等腰三角形,输出1
cout << getType(1.0, 1.0, 1.0) << endl; // 等边三角形,输出2
cout << getType(1.0, 2.0, 3.0) << endl; // 普通三角形,输出0
cout << getType(1.0, 2.0, 4.0) << endl; // 不能成三角形,输出-1
return 0;
}
```
阅读全文