首页 > 代码库 > UT源码+019

UT源码+019

设计三角形问题的程序

   输入三个整数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  !@#¥@#¥ 错误提示信息

UT源码+019