两种方法编写程序,输入三角形的三条边,判断是否能够成三角形,如果能够成 三角形,输入构成的是等腰三角形、等边三角形、直角三角形,还是普通的三角形。考虑整型、小数等不同类型数的三角形。方法 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 16:16:42 浏览: 92
根据输入三角形三条边判断该三角形形状
首先,我们可以创建一个Triangle类来表示一个三角形,具体实现如下:
Triangle.h文件:
```c++
#ifndef TRIANGLE_H
#define TRIANGLE_H
class Triangle {
public:
// 构造函数,初始化三角形的三条边
Triangle(int a, int b, int c);
Triangle(double a, double b, double c);
// 判断三角形类型的函数
int getType();
private:
double m_a;
double m_b;
double m_c;
};
#endif // TRIANGLE_H
```
Triangle.cpp文件:
```c++
#include "Triangle.h"
#include <cmath>
Triangle::Triangle(int a, int b, int c) {
m_a = a;
m_b = b;
m_c = c;
}
Triangle::Triangle(double a, double b, double c) {
m_a = a;
m_b = b;
m_c = c;
}
int Triangle::getType() {
if (m_a + m_b <= m_c || m_a + m_c <= m_b || m_b + m_c <= m_a) {
// 无法构成三角形
return -1;
} else if (m_a == m_b && m_a == m_c) {
// 等边三角形
return 0;
} else if (m_a == m_b || m_a == m_c || m_b == m_c) {
// 等腰三角形
return 1;
} else if (fabs(m_a * m_a + m_b * m_b - m_c * m_c) < 1e-6 ||
fabs(m_a * m_a + m_c * m_c - m_b * m_b) < 1e-6 ||
fabs(m_b * m_b + m_c * m_c - m_a * m_a) < 1e-6) {
// 直角三角形
return 2;
} else {
// 普通三角形
return 3;
}
}
```
接下来,我们可以创建一个用户界面类,使用这个类来进行输入和输出。具体实现如下:
UI.h文件:
```c++
#ifndef UI_H
#define UI_H
class UI {
public:
// 显示欢迎信息
static void showWelcome();
// 获取三角形三条边的函数模板
template<typename T>
static void getEdges(T &a, T &b, T &c);
// 显示三角形类型的函数模板
template<typename T>
static void showType(T a, T b, T c, int type);
};
#endif // UI_H
```
UI.cpp文件:
```c++
#include "UI.h"
#include "Triangle.h"
#include <iostream>
void UI::showWelcome() {
std::cout << "Welcome to Triangle Type Checker!" << std::endl;
}
template<typename T>
void UI::getEdges(T &a, T &b, T &c) {
std::cout << "Please input three edges of the triangle: ";
std::cin >> a >> b >> c;
}
template<typename T>
void UI::showType(T a, T b, T c, int type) {
switch (type) {
case -1:
std::cout << "These edges cannot form a triangle." << std::endl;
break;
case 0:
std::cout << "These edges form an equilateral triangle." << std::endl;
break;
case 1:
std::cout << "These edges form an isosceles triangle." << std::endl;
break;
case 2:
std::cout << "These edges form a right-angled triangle." << std::endl;
break;
case 3:
std::cout << "These edges form a normal triangle." << std::endl;
break;
default:
break;
}
}
```
最后,我们可以创建一个主函数来使用这些类,具体实现如下:
main.cpp文件:
```c++
#include "UI.h"
#include "Triangle.h"
int main() {
UI::showWelcome();
// 整型三角形
int a, b, c;
UI::getEdges(a, b, c);
Triangle intTriangle(a, b, c);
int intType = intTriangle.getType();
UI::showType(a, b, c, intType);
// 小数型三角形
double d, e, f;
UI::getEdges(d, e, f);
Triangle doubleTriangle(d, e, f);
int doubleType = doubleTriangle.getType();
UI::showType(d, e, f, doubleType);
return 0;
}
```
这样,我们就完成了一个可以判断不同类型的三角形的程序,使用了两种不同的方法实现,并且有用户界面。其中,方法1使用了函数重载,方法2使用了函数模板。注意,由于函数模板的实现需要放在头文件中,所以我们需要在UI.h中实现函数模板。
阅读全文