分类: 项目管理
2009-09-21 17:35:58
磁针石:xurongzhong#gmail.com
一个程序功能如下:
从一个输入框内读取3个整数,对应三角形的三个边,程序判断是普通三角形,等腰或者等边三角形。
软件评测师对此题按等价类划分的分析:
我们可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:
nA>0,B>0,C>0,且A+B>C,B+C>A,A+C>B。
n如果是等腰的,还要判断A=B,或B=C,或A=C。
n如果是等边的,则需判断是否A=B,且B=C,且A=C。
输入条件 |
有效等价类 |
无效等价类 |
是否三角形的三条边 |
(A>0), (1) (B>0), (2) (C>0), (3) (A+B>C), (4) (B+C>A), (5) (A+C>B), (6) |
(A≤0), (7) (B≤0), (8) (C≤0), (9) (A+B≤C), (10) (B+C≤A), (11) (A+C≤B), (12) |
是否等腰角形 |
(A=B), (13) (B=C), (14) (C=A), (15) |
(A≠B)and(B≠C)and(C≠A) (16) |
是否等边三角形 |
(A=B)and(B=C)and(C=A)
(17) |
(A≠B), (18) (B≠C), (19) (C≠A), (20) |
序号 |
【A,B,C】 |
覆盖等价类 |
输出 |
1 |
【3,4,5】 |
(1),(2),(3),(4),(5),(6) |
一般三角形 |
2 |
【0,1,2】 |
(7) |
不能构成三角形 |
3 |
【1,0,2】 |
(8) |
|
4 |
【1,2,0】 |
(9) |
|
5 |
【1,2,3】 |
(10) |
|
6 |
【1,3,2】 |
(11) |
|
7 |
【3,1,2】 |
(12) |
|
8 |
【3,3,4】 |
(1),(2),(3),(4),(5),(6),(13) |
等腰三角形 |
9 |
【3,4,4】 |
(1),(2),(3),(4),(5),(6),(14) |
|
10 |
【3,4,3】 |
(1),(2),(3),(4),(5),(6),(15) |
|
11 |
【3,4,5】 |
(1),(2),(3),(4),(5),(6),(16) |
非等腰三角形 |
12 |
【3,3,3】 |
(1),(2),(3),(4),(5),(6),(17) |
是等边三角形 |
13 |
【3,4,4】 |
(1),(2),(3),(4),(5),(6),(14),(18) |
非等边三角形 |
14 |
【3,4,3】 |
(1),(2),(3),(4),(5),(6),(15),(19) |
|
15 |
【3,3,4】 |
(1),(2),(3),(4),(5),(6),(13),(20) |
另外还要考虑负数,(0,0,0),带小数点、特殊字符、只输入2个数等情况。
该题目更复杂的版本,留待以后研究。
在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”。画出程序流程图、控制流程图、计算圈复杂度V(g),找出基本测试路径。