はじめての C

論理演算というのは CPUの構造からみると

  • ! → NOT 回路
  • && → AND 回路
  • || → OR 回路

というふうに、演算論理回路の仕組みにいちばん当てはまってるように思う ← まちがってる ?

三角形の3辺の長さを与えたとき
その三角形がなりたつか否かを
しらべるプログラムを作成せよ。

  1. /* sankaku */
  2. #include
  3. main()
  4. {
  5. int a, b, c;
  6. printf("これから3つの数字を入力して\n");
  7. printf("それが三角形になるか否かを\n");
  8. printf("判定します。\n\n");
  9. printf("1つ目の数字を入力 a = ");
  10. scanf("%d", &a);
  11. printf("2つ目の数字を入力 b = ");
  12. scanf("%d", &b);
  13. printf("3つ目の数字を入力 c = ");
  14. scanf("%d", &c);
  15. if (a + b > c && b + c > a && c + a > b) {
  16. printf("\n");
  17. printf("この3つの数字で三角形ができます。\n");
  18. } else {
  19. printf("\n");
  20. printf("残念だけど三角形にはなりません。\n");
  21. }
  22. }

プログラム sankaku を手直しして
三角形の種類も判別できる
プログラムを作成せよ。

  1. /* sankaku.2 */
  2. #include
  3. main()
  4. {
  5. int a, b, c, temp;
  6. printf("これから3つの数字を入力して\n");
  7. printf("三角形になるか否かを判定し\n");
  8. printf("それが三角形なら\n");
  9. printf("どんな形状かを知らせます。\n\n");
  10. printf("1つ目の数字を入力 a = ");
  11. scanf("%d", &a);
  12. printf("2つ目の数字を入力 b = ");
  13. scanf("%d", &b);
  14. printf("3つ目の数字を入力 c = ");
  15. scanf("%d", &c);
  16. if (a < b) {
  17. temp = a; a = b; b = temp; /* swap a, b */
  18. }
  19. if (a < c) {
  20. temp = a; a = c; c = temp; /* swap a, c */
  21. }
  22. if ((a + b > c && b + c > a && c + a > b) != 1) {
  23. printf("\n");
  24. printf("残念だけど三角形にはなりません。\n");
  25. }
  26. for ( ; (a + b > c && b + c > a && c + a > b) == 1 ; ) {
  27. if (a * a == b * b + c * c) {
  28. printf("\n");
  29. printf("直角三角形になります。\n");
  30. break;
  31. } else if (a * a > b * b + c * c) {
  32. printf("\n");
  33. printf("鈍角三角形になります。\n");
  34. break;
  35. } else if ( a * a < b * b + c * c) {
  36. printf("\n");
  37. printf("鋭角三角形になります。\n");
  38. break;
  39. }
  40. }
  41. }

(break は余分だったかなあ)

text: 金山典世さん(稚内北星)のページ