1 /**********************************************************************
3 引数として指定された3つの整数が三角形の3辺を表すものとし、
4 次のうちどれであるかをきめるメッセージを印字する。
5 不等辺三角形(scalene triangle)
6 二等辺三角形(isosceles triangle)
7 正三角形(equilateral triangle)
9 Glenford J Myers『ソフトウェア・テストの技法』(近代科学社、1980)
10 http://www.amazon.co.jp/dp/4764900599
11 第1章「自己診断テスト」に記載された「自己診断テスト」の仕様を実装
12 **********************************************************************/
17 int main(int argc, char *argv[])
22 /* 引数が3つ以外の場合は、エラー終了 */
25 fprintf(stderr, "too few argument.\n");
28 fprintf(stderr, "too many argument.\n");
32 for(i = 0; i < 3; i++) {
34 l[i] = strtol(argv[i+1], &check, 10);
37 fprintf(stderr, "%s: not integer\n", argv[i+1]);
42 fprintf(stderr, "%s: less than zero\n", argv[i+1]);
46 /* 三角不等式により、三角形になるかを判定 */
47 if(l[0] + l[1] <= l[2] || l[1] + l[2] <= l[0] || l[2] + l[0] <= l[1]) {
51 /* 3辺の長さが等しい場合は、正三角形 */
52 if(l[0] == l[1] && l[1] == l[2] && l[2] == l[0]) {
53 puts("equilateral triangle");
55 /* 2辺の長さが等しい場合は、二等辺三角形 */
56 else if(l[0] == l[1] || l[1] == l[2] || l[2] == l[0]) {
57 puts("isosceles triangle");
61 puts("scalene triangle");