はじめての C

あるファイル中の a から z までの文字の出現回数を数えるプログラムを作成せよ。
標準入力の方法はつぎのとおり
$./countwd < txt.file

  1. /* countwd */
  2. #include
  3. main()
  4. {
  5. char ch;
  6. int count[26];
  7. int ii, num;
  8. int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0;
  9. for ( ii = 0 ; ii < 26 ; ii++ ) {
  10. count[ii] = 0; /* すべての配列に 0 を入れておく */
  11. }
  12. while ((ch = getchar()) != EOF) {
  13. num = ch - 'a';
  14. switch (num) {
  15. case 0 : a++, count[0] = a; break;
  16. case 1 : b++, count[1] = b; break;
  17. case 2 : c++, count[2] = c; break;
  18. case 3 : d++, count[3] = d; break;
  19. case 4 : e++, count[4] = e; break;
  20. case 5 : f++, count[5] = f; break;
  21. case 6 : g++, count[6] = g; break;
  22. case 7 : h++, count[7] = h; break;
  23. case 8 : i++, count[8] = i; break;
  24. case 9 : j++, count[9] = j; break;
  25. case 10 : k++, count[10] = k; break;
  26. case 11 : l++, count[11] = l; break;
  27. case 12 : m++, count[12] = m; break;
  28. case 13 : n++, count[13] = n; break;
  29. case 14 : o++, count[14] = o; break;
  30. case 15 : p++, count[15] = p; break;
  31. case 16 : q++, count[16] = q; break;
  32. case 17 : r++, count[17] = r; break;
  33. case 18 : s++, count[18] = s; break;
  34. case 19 : t++, count[19] = t; break;
  35. case 20 : u++, count[20] = u; break;
  36. case 21 : v++, count[21] = v; break;
  37. case 22 : w++, count[22] = w; break;
  38. case 23 : x++, count[23] = x; break;
  39. case 24 : y++, count[24] = y; break;
  40. case 25 : z++, count[25] = z; break;
  41. }
  42. }
  43. printf("count of 'a' -> %d\n", count[0]);
  44. printf("count of 'b' -> %d\n", count[1]);
  45. printf("count of 'c' -> %d\n", count[2]);
  46. printf("count of 'd' -> %d\n", count[3]);
  47. printf("count of 'e' -> %d\n", count[4]);
  48. printf("count of 'f' -> %d\n", count[5]);
  49. printf("count of 'g' -> %d\n", count[6]);
  50. printf("count of 'h' -> %d\n", count[7]);
  51. printf("count of 'i' -> %d\n", count[8]);
  52. printf("count of 'j' -> %d\n", count[9]);
  53. printf("count of 'k' -> %d\n", count[10]);
  54. printf("count of 'l' -> %d\n", count[11]);
  55. printf("count of 'm' -> %d\n", count[12]);
  56. printf("count of 'n' -> %d\n", count[13]);
  57. printf("count of 'o' -> %d\n", count[14]);
  58. printf("count of 'p' -> %d\n", count[15]);
  59. printf("count of 'q' -> %d\n", count[16]);
  60. printf("count of 'r' -> %d\n", count[17]);
  61. printf("count of 's' -> %d\n", count[18]);
  62. printf("count of 't' -> %d\n", count[19]);
  63. printf("count of 'u' -> %d\n", count[20]);
  64. printf("count of 'v' -> %d\n", count[21]);
  65. printf("count of 'w' -> %d\n", count[22]);
  66. printf("count of 'x' -> %d\n", count[23]);
  67. printf("count of 'y' -> %d\n", count[24]);
  68. printf("count of 'z' -> %d\n", count[25]);
  69. }

(変数の数を もっと減らせる方法はないんだろうか ?)

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