设计三角形问题的程序
输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及不构成三角形。(等腰直角三角形,判断为等腰三角形)
现在要求输入三个整数a、b、c,必须满足以下条件:
条件1 1≤a≤100 条件4 a<b+ c
条件2 1≤b≤100 条件5 b<a+ c
条件3 1≤c≤100 条件6 c<a+ b
String triangle(int a,int b,int c) 返回字符型
程序要求:
1)先显示:“请输入三角形的三条边:”
2)只要有不满足条件1,2,3之一,就返回“边的值不在范围内!”
3)只要有不满足4,5,6之一,就返回“不构成三角形”
4)根据边的情况分别返回:“等边三角形”“等腰三角形”“直角三角形”“一般三角形”
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<<Test.triangle(a,b,c)<<endl; 110 } 111 else printf("输入信息错误\n"); 112 return 0; 113 }
尝试编写测试用例集,预期能找到常见的缺陷。填写以下表格。(行数可以自己增加)
序号 |
测试者的行为和数据 |
期待结果 |
1 |
3,6,5 |
一般三角形 |
2 |
4,4,5 |
等腰三角形 |
3 |
3,3,3 |
等边三角形 |
4 |
“a”3,4 |
错误提示信息 |
5 |
3,4,1.235 |
错误提示信息 |
6 | 123847219347,,1587295187,9 | 错误提示信息 |
7 | !@#¥@#¥ | 错误提示信息 |
时间: 2024-10-06 06:00:30