teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

コード更新

2020/06/12 15:11

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -24,9 +24,8 @@
24
24
  void hanoi(int n, int from, int buffer, int to) {
25
25
  if (n > 1) hanoi(n - 1, from, to, buffer);
26
26
 
27
- int f = 0, t = 0;
28
- while (tower[from][f] == '.') f++;
27
+ int f = 0; while (tower[from][f] == '.') f++;
29
- while (tower[to][t + 1] == '.') t++;
28
+ int t = 0; while (tower[to][t + 1] == '.') t++;
30
29
  tower[to][t] = tower[from][f];
31
30
  tower[from][f] = '.';
32
31
  printf("%s %s %s\n", tower[0], tower[1], tower[2]);

3

動作プログラム追記

2020/06/12 15:11

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -12,4 +12,38 @@
12
12
  tower[2][i] = '.';
13
13
  }
14
14
  printf("%s %s %s\n", tower[0], tower[1], tower[2]);
15
+ ```
16
+
17
+ 動作プログラムを書いておきます。
18
+
19
+ ```c
20
+ #include <stdio.h>
21
+
22
+ char tower[3][10];
23
+
24
+ void hanoi(int n, int from, int buffer, int to) {
25
+ if (n > 1) hanoi(n - 1, from, to, buffer);
26
+
27
+ int f = 0, t = 0;
28
+ while (tower[from][f] == '.') f++;
29
+ while (tower[to][t + 1] == '.') t++;
30
+ tower[to][t] = tower[from][f];
31
+ tower[from][f] = '.';
32
+ printf("%s %s %s\n", tower[0], tower[1], tower[2]);
33
+
34
+ if (n > 1) hanoi(n - 1, buffer, from, to);
35
+ }
36
+
37
+ int main(void) {
38
+ int N;
39
+ scanf("%d", &N);
40
+ for (int i = 0; i < N; i++) {
41
+ tower[0][i] = '0' + i;
42
+ tower[1][i] = '.';
43
+ tower[2][i] = '.';
44
+ }
45
+ printf("%s %s %s\n", tower[0], tower[1], tower[2]);
46
+ hanoi(N, 0, 1, 2);
47
+ return 0;
48
+ }
15
49
  ```

2

表現変更

2020/06/12 14:16

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,4 @@
1
- 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力できるようにしちゃいます。
1
+ 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力しちゃいます。
2
2
 
3
3
  ```c
4
4
  char tower[3][10]; // '\0' で初期化される

1

エスケープ

2020/06/12 08:59

投稿

shiracamus
shiracamus

スコア5406

answer CHANGED
@@ -1,4 +1,4 @@
1
- 私なら、文字配列にして終端に `'\0'` を置いて "%s" で文字列出力できるようにしちゃいます。
1
+ 私なら、文字配列にして終端に `'\0'` を置いて `"%s"` で文字列出力できるようにしちゃいます。
2
2
 
3
3
  ```c
4
4
  char tower[3][10]; // '\0' で初期化される