- 1 //@105032014019李悦洲
- 2#include "iostream"3#include "string"4#include "math.h"5 6#define DENGBIAN 0 7#define DENGYAO 1 8#define ZHIJIAO 2 9#define YIBAN 3 10 11#define WUCHAZHI 0.00001 12 13 using namespace std;
- 14 15 class CTriangle 16 {
- 17 private: 18 int a;
- 19 int b;
- 20 int c;
- 21 protected: 22 void setTriangle(int a, int b, int c); //赋值
- 23 bool checkTheOne() const; //检查范围条件
- 24 bool checkTheTwo() const; //检查是否组成三角形
- 25 int checkType() const; //判断三角形种类
- 26 public: 27 string triangle(const int & a, const int & b, const int & c); //题目要求的函数
- 28
- };
- 29 30 void CTriangle: :setTriangle(int a, int b, int c) 31 {
- 32 this - >a = a;
- 33 this - >b = b;
- 34 this - >c = c;
- 35
- }
- 36 37 bool CTriangle: :checkTheOne() const //检查范围条件
- 38 {
- 39
- if ((a >= 1 && a <= 100) && (b >= 1 && b <= 100) && (c >= 1 && c <= 100)) 40
- return true;
- 41
- else 42
- return false;
- 43
- }
- 44 bool CTriangle: :checkTheTwo() const //检查是否组成三角形
- 45 {
- 46
- if ((a < (b + c)) && (b < (a + c)) && (c < (a + b))) 47
- return true;
- 48
- else 49
- return false;
- 50
- }
- 51 int CTriangle: :checkType() const //判断三角形种类
- 52 {
- 53
- if (a == b && a == c && b == c) 54
- return DENGBIAN;
- 55
- if (a == b || a == c || b == c) 56
- return DENGYAO;
- 57
- if (a * a + b * b == c * c || a * a == b * b + c * c || b * b == a * a + c * c) 58
- return ZHIJIAO;
- 59
- return YIBAN;
- 60
- }
- 61 string CTriangle: :triangle(const int & a, const int & b, const int & c) //题目要求的函数
- 62 {
- 63 setTriangle(a, b, c);
- 64
- if (!checkTheOne()) 65 {
- 66
- return "边的值不在范围内!";
- 67
- }
- 68
- else if (!checkTheTwo()) 69 {
- 70
- return "不构成三角形";
- 71
- }
- 72
- switch (checkType()) 73 {
- 74
- case DENGBIAN:
- return "等边三角形";
- 75
- case DENGYAO:
- return "等腰三角形";
- 76
- case ZHIJIAO:
- return "直角三角形";
- 77
- case YIBAN:
- return "一般三角形";
- 78
- }
- 79
- return "ERROR?";
- 80
- }
- 81 82 bool inputInteger(int & a, int & b, int & c) //完成用户输入并且判断是否输入整数,返回输入是否合法
- 83 {
- 84 int i = 0;
- 85 double d[3] = {
- 0.0f
- };
- 86
- if (scanf("%lf,%lf,%lf", &d[0], &d[1], &d[2]) != 3) 87 {
- 88
- return false;
- 89
- }
- 90
- for (i = 0; i < 3; i++) 91 {
- 92
- if (fabs((double)(int) d[i] - d[i]) > WUCHAZHI) 93 {
- 94
- return false;
- 95
- }
- 96
- }
- 97 a = d[0];
- 98 b = d[1];
- 99 c = d[2];
- 100
- }
- 101 102 int main() //测试代码
- 103 {
- 104 CTriangle Test;
- 105 int a,
- b,
- c;
- 106 printf("请输入三角形的三条边\n");
- 107
- if (inputInteger(a, b, c)) 108 {
- 109 cout < endl;
- 110
- }
- 111
- else printf("输入信息错误\n");
- 112
- return 0;
- 113
- }
来源: http://www.bubuko.com/infodetail-1976781.html