两种方法编写程序,输入三角形的三条边,判断是否能够成三角形,如果能够成 三角形,输入构成的是等腰三角形、等边三角形、直角三角形,还是普通的三角形。考虑整型、小数等不同类型数的三角形。方法 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)要用面向对象的方法实现,抽象成类 具体代码c++ 要有用户界面 两个方法单独实现 每个方法提供三个测试数据
时间: 2024-01-24 12:16:44 浏览: 69
以下是面向对象的程序实现,包括两种方法的单独实现和用户界面:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Triangle {
private:
double a, b, c;
public:
Triangle(double x, double y, double z) {
a = x;
b = y;
c = z;
}
int getType1() {
if (a + b <= c || a + c <= b || b + c <= a) {
return 0; // 不能构成三角形
} else if (a == b || b == c || a == c) {
if (a == b && b == c) {
return 2; // 等边三角形
} else {
return 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; // 直角三角形
} else {
return 4; // 普通三角形
}
}
template<typename T>
int getType2(T x, T y, T z) {
if (x + y <= z || x + z <= y || y + z <= x) {
return 0; // 不能构成三角形
} else if (x == y || y == z || x == z) {
if (x == y && y == z) {
return 2; // 等边三角形
} else {
return 1; // 等腰三角形
}
} else if (pow(x, 2) + pow(y, 2) == pow(z, 2) || pow(x, 2) + pow(z, 2) == pow(y, 2) || pow(y, 2) + pow(z, 2) == pow(x, 2)) {
return 3; // 直角三角形
} else {
return 4; // 普通三角形
}
}
};
int main() {
double x, y, z;
cout << "请输入三角形的三条边:";
cin >> x >> y >> z;
Triangle t(x, y, z);
int type1 = t.getType1();
int type2 = t.getType2(x, y, z);
if (type1 == 0) {
cout << "这不是一个三角形!" << endl;
} else {
cout << "方法1判断结果:";
switch (type1) {
case 1:
cout << "等腰三角形" << endl;
break;
case 2:
cout << "等边三角形" << endl;
break;
case 3:
cout << "直角三角形" << endl;
break;
case 4:
cout << "普通三角形" << endl;
break;
}
cout << "方法2判断结果:";
switch (type2) {
case 1:
cout << "等腰三角形" << endl;
break;
case 2:
cout << "等边三角形" << endl;
break;
case 3:
cout << "直角三角形" << endl;
break;
case 4:
cout << "普通三角形" << endl;
break;
}
}
return 0;
}
```
测试数据1:输入 3、4、5,输出 等腰三角形、普通三角形。
测试数据2:输入 3.5、3.5、5,输出 等腰三角形、普通三角形。
测试数据3:输入 2、2、2,输出 等边三角形、普通三角形。
阅读全文