fork download
  1. // ccsk_161_049.c
  2. /*
  3.   C/C++の宿題片付けます 161代目
  4.   http://t...content-available-to-author-only...h.net/test/read.cgi/tech/1354070278/49
  5.   [1] 授業単元:計算機実習
  6.   [2] 問題文(含コード&リンク): http://c...content-available-to-author-only...d.org/eMHdX9DL
  7.   上記のプログラムを変更して,キーボードから(x, y)の座標とマスの状態を入力し,反映するようにしなさい.
  8.   入力の際には座標や状態が範囲を超えていないか確認し,越えているときにはもう一度入力するようにしなさい.
  9.   [3] 環境
  10.    [3.1] OS:Linux
  11.    [3.2] コンパイラ名とバージョン:gcc
  12.    [3.3] 言語:C
  13.   [4] 期限:12/4
  14. */
  15. #include<stdio.h>
  16.  
  17. #define YOKO (8)
  18. #define TATE (8)
  19. #define OKUMONO (2) // 置くものの種類 数
  20.  
  21. int plot[TATE][YOKO];
  22. char *state[] = { " ", "○ ", "● " }; // , "◎", "◇", "◆", ,,,
  23.  
  24. ////////////////////////////////////////////////////////
  25. // [func] 表示
  26. void print_board()
  27. {
  28. int x, y;
  29.  
  30. printf("\033[2J");
  31. printf("\033[%d;%dH", 0, 0);
  32. printf(" 0 1 2 3 4 5 6 7\n");
  33. printf(" +--+--+--+--+--+--+--+--+\n");
  34. for (y = 0; y < TATE; y++) {
  35. printf("%2d|", y);
  36. for (x = 0; x < YOKO; x++) {
  37. printf("%s|", state[plot[y][x]]);
  38. }
  39. printf("%d\n", y);
  40. printf(" +--+--+--+--+--+--+--+--+\n");
  41. }
  42. printf(" 0 1 2 3 4 5 6 7\n");
  43. }
  44.  
  45. ////////////////////////////////////////////////////////
  46. // [func] set
  47. // [arg] x, y : 置きたい場所
  48. // s : 置きたいもの (0, 1, 2 ,,,)
  49. // [ret] 0 : 置けたので置いた
  50. // -1 : 座標が範囲外なので置けない
  51. // -2 : sが不正
  52. // ( -3 : 既に何かが置いてあるので置けない )未実装
  53. int set(int x, int y, int s)
  54. {
  55. // check
  56. if (x < 0 || YOKO <= x || y < 0 || TATE <= y) {
  57. return -1;
  58. }
  59. #if 1
  60. if (s < 0 || OKUMONO < s) { // 何でも置ける
  61. return -2;
  62. }
  63. #else
  64. if (s < 1 || OKUMONO < s) { // reversi mode
  65. return -2;
  66. }
  67. if (plot[y][x]) {
  68. return -3;
  69. }
  70. #endif
  71. // set
  72. plot[y][x] = s;
  73.  
  74. // reversi
  75. ; //未実装
  76.  
  77. // end
  78. return 0;
  79. }
  80.  
  81. ////////////////////////////////////////////////////////
  82. // main
  83. int main()
  84. {
  85. int x, y, s;
  86. char b[256];
  87.  
  88. // 初期化
  89. for (y = 0; y < TATE; y++) {
  90. for (x = 0; x < YOKO; x++) {
  91. plot[y][x] = 0;
  92. }
  93. }
  94. print_board();
  95.  
  96. // 入力
  97. while (1) {
  98. printf("input x y state(1-%d) ('q' to quit)\n", OKUMONO);
  99. fgets(b, sizeof(b), stdin);
  100. if (b[0] == 'q') {
  101. break;
  102. }
  103. sscanf(b, "%d %d %d", &x, &y, &s);
  104. if (set(x, y, s)) {
  105. printf("error\n");
  106. } else {
  107. // 表示
  108. print_board();
  109. // 勝敗判定
  110. ; // 未実装
  111. }
  112. }
  113.  
  114. // 終了
  115. ;
  116. }
  117.  
  118. // End of ccsk_161_049.c
Runtime error #stdin #stdout 0.01s 1680KB
stdin
1 2 1
0 1 2
7 7 1
7 6 1
7 5 1
q
stdout
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|  |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |  |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |  |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |  |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |  |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|  |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |○ |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |  |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |  |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |  |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|● |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |○ |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |  |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |  |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |  |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|● |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |○ |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |  |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |  |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |○ |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|● |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |○ |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |  |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |○ |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |○ |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)
    0  1  2  3  4  5  6  7
  +--+--+--+--+--+--+--+--+
 0|  |  |  |  |  |  |  |  |0
  +--+--+--+--+--+--+--+--+
 1|● |  |  |  |  |  |  |  |1
  +--+--+--+--+--+--+--+--+
 2|  |○ |  |  |  |  |  |  |2
  +--+--+--+--+--+--+--+--+
 3|  |  |  |  |  |  |  |  |3
  +--+--+--+--+--+--+--+--+
 4|  |  |  |  |  |  |  |  |4
  +--+--+--+--+--+--+--+--+
 5|  |  |  |  |  |  |  |○ |5
  +--+--+--+--+--+--+--+--+
 6|  |  |  |  |  |  |  |○ |6
  +--+--+--+--+--+--+--+--+
 7|  |  |  |  |  |  |  |○ |7
  +--+--+--+--+--+--+--+--+
    0  1  2  3  4  5  6  7
input  x  y state(1-2)  ('q' to quit)