(五)白盒测试实例--编码

1、Triangle.h

  1. /*
  2.  * Copyright (c) 2008, 胡添发([email protected])
  3.  * 
  4.  * 三角形类型判断
  5.  *
  6.  */
  7. #include
  8. #include
  9. /*
  10.  * 判断一个整数是否在(0, 200)区间内
  11.  * 返回值:true-否; false-是
  12. */
  13. bool isOutOfRange(int i);
  14. /*
  15.  * 判断三条边是否合法(即:判断三条边都在合法的范围内)
  16.  * 返回值:true-是; false-否
  17. */
  18. bool isLegal(int a, int b, int c);
  19. /*
  20.  * 判断两条边之和是否大于第三边
  21.  * 返回值:true-是; false-否
  22. */
  23. bool isSumBiger(int a, int b, int c);
  24. /*
  25.  * 判断三条边是否能够组成三角形
  26.  * 返回值:true-是; false-否
  27. */
  28. bool isTriangle(int a, int b, int c);
  29. /*
  30.  * 判断两条边是否相等
  31.  * 返回值:true-是; false-否
  32. */
  33. bool isEquals(int a, int b);
  34. /*
  35.  * 求三角形有几条边相等
  36.  * 返回值:相等边的数量
  37. */
  38. int howManyEquals(int a, int b, int c);
  39. /*
  40.  * 判断是否满足两边平方之和是否等于第三边的平方
  41.  *
  42.  */
  43. bool isPowerSumEquals(int a, int b, int c);
  44. /*
  45.  * 判断第一个数是否比第二个数大
  46.  */
  47. bool isGreaterThan(int a, int b);
  48. /*
  49.  * 判断是否是直角三角形
  50.  *
  51.  */
  52. bool isRightRriangle(int a, int b, int c);
  53. /*
  54.  * 判断三角形的类型,返回值:
  55.  * 1、不能组成三角形
  56.  * 2、等边三角形
  57.  * 3、等腰三角形
  58.  * 4、直角三角形
  59.  * 5、一般三角形
  60.  * 6、某些边不满足限制
  61.  */
  62. int triangleType(int a, int b, int c);

2、Triangle.cpp

  1. /*
  2.  * Copyright (c) 2008, 胡添发([email protected])
  3.  * 
  4.  * 三角形类型判断
  5.  * 
  6.  */
  7. #include
  8. #include
  9. /*
  10.  * 判断一个整数是否在(0, 200)区间内
  11.  * 返回值:true-否; false-是
  12. */
  13. bool isOutOfRange(int i)
  14. {
  15.     if(0
  16.     {
  17.         return false;
  18.     }
  19.     else
  20.     {
  21.         return true;
  22.     }
  23. };
  24. /*
  25.  * 判断三条边是否合法(即:判断三条边都在合法的范围内)
  26.  * 返回值:true-是; false-否
  27. */
  28. bool isLegal(int a, int b, int c)
  29. {
  30.     if(isOutOfRange(a) || isOutOfRange(b) || isOutOfRange(c))
  31.     {
  32.         return false;       
  33.     }
  34.     return true;
  35. }
  36. /*
  37.  * 判断两条边之和是否大于第三边
  38.  * 返回值:true-是; false-否
  39. */
  40. bool isSumBiger(int a, int b, int c)
  41. {
  42.     if(a+b > c)
  43.     {
  44.         return true;
  45.     }
  46.     return false;
  47. }
  48. /*
  49.  * 判断三条边是否能够组成三角形
  50.  * 返回值:true-是; false-否
  51. */
  52. bool isTriangle(int a, int b, int c)
  53. {
  54.     if(isSumBiger(a, b, c) && isSumBiger(a, c, b) && isSumBiger(b, c, a))
  55.     {
  56.         return true;
  57.     }
  58.     return false;
  59. }
  60. /*
  61.  * 判断两条边是否相等
  62.  * 返回值:true-是; false-否
  63. */
  64. bool isEquals(int a, int b)
  65. {
  66.     if(a==b)
  67.     {
  68.         return true;
  69.     }
  70.     return false;
  71. }
  72. /*
  73.  * 求三角形有几条边相等
  74.  * 返回值:相等边的数量 
  75.  * 1:没有边相等 2:只有两条边相等 3:三条边相等
  76.  * 
  77. */
  78. int howManyEquals(int a, int b, int c)
  79. {
  80.     int count = 1;
  81.     if(isEquals(a,b))
  82.     {
  83.         count++;
  84.     }
  85.     if(isEquals(b,c))
  86.     {
  87.         count++;
  88.     }
  89.     if(isEquals(a,c))
  90.     {
  91.         count++;
  92.     }
  93.     if(count > 3)  //如果三条边都相等,则count多加了一次
  94.     {
  95.         count = 3;
  96.     }
  97.     return count;
  98. }
  99. /*
  100.  * 判断是否满足两边平方之和是否等于第三边的平方
  101.  *
  102.  */
  103. bool isPowerSumEquals(int a, int b, int c)
  104. {
  105.     if(a*a + b*b == c*c)
  106.     {
  107.         return true;
  108.     }
  109.     return false;
  110. }
  111. /*
  112.  * 判断第一个数是否比第二个数大
  113.  */
  114. bool isGreaterThan(int a, int b)
  115. {
  116.     if(a>b)
  117.     {
  118.         return true;
  119.     }
  120.     return false;
  121. }
  122. /*
  123.  * 判断是否是直角三角形
  124.  *
  125.  */
  126. bool isRightRriangle(int a, int b, int c)
  127. {
  128.     int max = 0;
  129.     if(isGreaterThan(a, b))
  130.     {
  131.         max = a;
  132.         a = b;
  133.         b = max;
  134.     }
  135.     if(isGreaterThan(b, c))
  136.     {
  137.         max = b;
  138.         b = c;
  139.         c = max;
  140.     }
  141.     return isPowerSumEquals(a, b, c);
  142. }
  143. /*
  144.  * 判断三角形的类型,返回值:
  145.  * 1、不能组成三角形
  146.  * 2、等边三角形
  147.  * 3、等腰三角形
  148.  * 4、直角三角形
  149.  * 5、一般三角形
  150.  * 6、某些边不满足限制
  151.  */
  152. int triangleType(int a, int b, int c)
  153. {
  154.     int type=0;
  155.     if(isLegal(a, b, c))
  156.     {
  157.         if(isTriangle(a, b, c))
  158.         {
  159.             int num = howManyEquals(a, b, c);
  160.             if(3==num)
  161.             {
  162.                 type=2;
  163.             }
  164.             else if(2==num)
  165.             {
  166.                 type=3;
  167.             }
  168.             else if(isRightRriangle(a, b, c))
  169.             {
  170.                 type=4;
  171.             }
  172.             else
  173.             {
  174.                 type=5;
  175.             }
  176.         }
  177.         else
  178.         {
  179.             type=1; 
  180.         }
  181.     }
  182.     else
  183.     {
  184.         type=6;
  185.     }
  186.     return type;
  187. }

 

你可能感兴趣的:(软件测试)