質問編集履歴

6

誤字

2020/06/09 12:41

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
@@ -1 +1 @@
1
- なぜ visual studio では#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
1
+ なぜ visual studio ではscanfを使うとき#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
test CHANGED
File without changes

5

誤字

2020/06/09 12:41

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1 +1 @@
1
- なぜ visual studio では#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
1
+ なぜ visual studio ではscanfを使うとき#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?

4

誤字

2020/06/09 12:40

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
@@ -1 +1 @@
1
- C言語でスタックたハノイ塔プログラムについての質問
1
+ なぜ visual studio では#define _CRT_SECURE_NO_WARNINGS書かなければならないのですか?
test CHANGED
@@ -1,371 +1 @@
1
- C言語でスタックを用いてハノイの塔というゲームを作ることになったので、一応かいてみたのですがpop関数とpush関数の引数とその関数の中身が構造体ばかりで混乱してしまい分からなくなってしまったので、そこの部分のソースコードのおかしいところを指摘してほしいです。よろしくお願いします。
2
-
3
- visual studio 2019で書いております。
4
-
5
-
6
-
7
- #define _CRT_SECURE_NO_WARNINGS
1
+ なぜ visual studio では#define _CRT_SECURE_NO_WARNINGSを書かなければならないのですか?
8
-
9
- #include <stdio.h>
10
-
11
-
12
-
13
- #define HEIGHT 5
14
-
15
- #define TOWERS 3
16
-
17
-
18
-
19
-
20
-
21
- //Stack構造体
22
-
23
- struct Stack {
24
-
25
- int stack[HEIGHT];
26
-
27
- int volume;
28
-
29
- };
30
-
31
- //初期化関数
32
-
33
- init(struct Stack* tower) {
34
-
35
- int i, j;
36
-
37
- for (i = 0; i < TOWERS; i++)
38
-
39
- for (j = 0; j < HEIGHT; j++)
40
-
41
- tower[i].stack[j] = 0;
42
-
43
-
44
-
45
- tower->volume = 0;
46
-
47
-
48
-
49
- }
50
-
51
- //push関数
52
-
53
- int push(struct Stack* tower,int number/*円盤の大きさ*/) {
54
-
55
-
56
-
57
- tower->stack[tower->volume] = number;
58
-
59
- tower->volume++;
60
-
61
-
62
-
63
- return 0;
64
-
65
-
66
-
67
- }
68
-
69
- //pop関数
70
-
71
- int pop(struct Stack* tower) {
72
-
73
- int data = 0;
74
-
75
- tower->volume--;
76
-
77
- data = tower->stack[tower->volume];
78
-
79
- tower->stack[tower->volume] = 0;
80
-
81
-
82
-
83
- return data;
84
-
85
- }
86
-
87
-
88
-
89
- int enableStack(struct Stack fromTower, struct Stack toTower)
90
-
91
- {
92
-
93
- /* 移動可能である条件に応じて返り値を返す */
94
-
95
- if (fromTower.stack[fromTower.volume-1] > toTower.stack[toTower.volume-1])
96
-
97
- return 0;
98
-
99
- else
100
-
101
- return 1;
102
-
103
-
104
-
105
- }
106
-
107
-
108
-
109
- int checkFinish(struct Stack tower, int blocks)
110
-
111
- {
112
-
113
- //ブロックが初期状態と同じ状態かチェックする
114
-
115
- if (tower.volume == blocks)
116
-
117
- return 1;
118
-
119
- else
120
-
121
- return 0;
122
-
123
- }
124
-
125
-
126
-
127
- //main関数
128
-
129
- int main()
130
-
131
- {
132
-
133
- int i, j;
134
-
135
- int count = 1;
136
-
137
- int fromTower, toTower;
138
-
139
- int tempNumber;
140
-
141
- int blocks;
142
-
143
- struct Stack tower[TOWERS];
144
-
145
-
146
-
147
- printf("3,4,5段から段数を選んでください:");
148
-
149
- scanf("%d", &blocks);
150
-
151
- init(&tower);
152
-
153
-
154
-
155
- /*第1塔に決められた個数をスタックする*/
156
-
157
- for (i = 0; i < blocks; i++) {
158
-
159
- push(&tower[0], blocks - i);
160
-
161
- }
162
-
163
-
164
-
165
- /*塔の初期状態を表示する*/
166
-
167
- for (i = 0; i < TOWERS; i++) {
168
-
169
- printf("%d:", i + 1);
170
-
171
- for (j = 0; j < HEIGHT; j++) {
172
-
173
- printf("%d ", tower[i].stack[j]);
174
-
175
- }
176
-
177
- putchar('\n');
178
-
179
- }
180
-
181
-
182
-
183
- while (1) {
184
-
185
-
186
-
187
- printf("%d回目\n", count++);
188
-
189
- while (1)
190
-
191
- {
192
-
193
- printf("移動元と移動先の塔を入力してください。[? ?]:");
194
-
195
- scanf("%d %d", &fromTower, &toTower);
196
-
197
-
198
-
199
- tempNumber = enableStack(tower[fromTower - 1], tower[toTower - 1]);
200
-
201
-
202
-
203
- if (tempNumber == 1) {
204
-
205
- pop(&tower);
206
-
207
- push(&tower, tower->stack[fromTower]);
208
-
209
- }
210
-
211
-
212
-
213
- else {
214
-
215
- printf("移動不可です。\n");
216
-
217
- break;
218
-
219
- }
220
-
221
-
222
-
223
-
224
-
225
- //移動元の塔から移動先の塔にデータを移動させる
226
-
227
- pop(&fromTower);
228
-
229
- //現在の塔の状態を表示する
230
-
231
- for (i = 0; i < TOWERS; i++) {
232
-
233
- printf("%d:", i + 1);
234
-
235
- for (j = 0; j < HEIGHT; j++) {
236
-
237
- printf("%d ", tower[i].stack[j]);
238
-
239
- }
240
-
241
- putchar('\n');
242
-
243
- }
244
-
245
-
246
-
247
- //クリア判定をする
248
-
249
- tempNumber = checkFinish(tower[toTower], blocks);
250
-
251
- if (tempNumber == 1)
252
-
253
- printf("クリア!\n");
254
-
255
- else
256
-
257
- break;
258
-
259
-
260
-
261
- }
262
-
263
- }
264
-
265
-
266
-
267
-
268
-
269
- return 0;
270
-
271
-
272
-
273
- }
274
-
275
-
276
-
277
-
278
-
279
- ちなみに実行結果は以下のようになります。
280
-
281
- よろしくお願いいたします。
282
-
283
-
284
-
285
- 実行結果はこんな感じになるそうです。
286
-
287
- よろしくお願いします。
288
-
289
-
290
-
291
-
292
-
293
- 3,4,5段から段数を選んでください::3
294
-
295
- 1:3 2 1 0 0
296
-
297
- 2:0 0 0 0 0
298
-
299
- 3:0 0 0 0 0
300
-
301
- 1 回目
302
-
303
- 移動元塔と移動先塔を入力してください.[? ?]:1 3
304
-
305
- 1:3 2 0 0 0
306
-
307
- 2:0 0 0 0 0
308
-
309
- 3:1 0 0 0 0
310
-
311
- 2 回目
312
-
313
- 移動元塔と移動先塔を入力してください.[? ?]:1 2
314
-
315
- 1:3 0 0 0 0
316
-
317
- 2:2 0 0 0 0
318
-
319
- 3:1 0 0 0 0
320
-
321
- 3 回目
322
-
323
- 移動元塔と移動先塔を入力してください.[? ?]:3 2
324
-
325
- 1:3 0 0 0 0
326
-
327
- 2:2 1 0 0 0
328
-
329
- 3:0 0 0 0 0
330
-
331
- 4 回目
332
-
333
- 移動元塔と移動先塔を入力してください.[? ?]:1 3
334
-
335
- 1:0 0 0 0 0
336
-
337
- 2:2 1 0 0 0
338
-
339
- 3:3 0 0 0 0
340
-
341
- 5 回目
342
-
343
- 移動元塔と移動先塔を入力してください.[? ?]:2 1
344
-
345
- 1:1 0 0 0 0
346
-
347
- 2:2 0 0 0 0
348
-
349
- 3:3 0 0 0 0
350
-
351
- 6 回目
352
-
353
- 移動元塔と移動先塔を入力してください.[? ?]:2 3
354
-
355
- 1:1 0 0 0 0
356
-
357
- 2:0 0 0 0 0
358
-
359
- 3:3 2 0 0 0
360
-
361
- 7 回目
362
-
363
- 移動元塔と移動先塔を入力してください.[? ?]:1 3
364
-
365
- 1:0 0 0 0 0
366
-
367
- 2:0 0 0 0 0
368
-
369
- 3:3 2 1 0 0
370
-
371
- クリア!

3

誤字

2020/06/09 08:19

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- C言語でスタックを用いてハノイの塔というゲームを作ることになったので、一応かいてみたのですがpop関数とpush関数の引数とその関数の中身が構造体とポインタばかりで混乱してしまい分からなくなってしまったので、そこの部分のソースコードのおかしいところを指摘してほしいです。よろしくお願いします。
1
+ C言語でスタックを用いてハノイの塔というゲームを作ることになったので、一応かいてみたのですがpop関数とpush関数の引数とその関数の中身が構造体ばかりで混乱してしまい分からなくなってしまったので、そこの部分のソースコードのおかしいところを指摘してほしいです。よろしくお願いします。
2
2
 
3
3
  visual studio 2019で書いております。
4
4
 

2

誤字

2020/06/09 08:04

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- C言語でスタックを用いてハノイの塔というゲームを作ることになったのですが、一応かいてみたのですおそらくpop関数とpush関数の引数とその関数の中身が構造体とポインタばかりで混乱してしまい分からなくなってしまったので、このソースコードのおかしいところを指摘してほしいです。よろしくお願いします。
1
+ C言語でスタックを用いてハノイの塔というゲームを作ることになったので、一応かいてみたのですpop関数とpush関数の引数とその関数の中身が構造体とポインタばかりで混乱してしまい分からなくなってしまったので、この部分のソースコードのおかしいところを指摘してほしいです。よろしくお願いします。
2
2
 
3
3
  visual studio 2019で書いております。
4
4
 

1

聞き方

2020/06/09 08:03

投稿

hogehoge237
hogehoge237

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,4 @@
1
- C言語でスタックを用いてハノイの塔というゲームを作ることになったのですが、一応かいてみたのですが全然だめなので、間違ってるところを指摘してほしいです。めんどさかったら正しコードをコピペてもらって
1
+ C言語でスタックを用いてハノイの塔というゲームを作ることになったのですが、一応かいてみたのですおそらくpop関数とpush関数の引数とその関数の中身構造体とポインタばかりで混乱してしまい分からくなってしまったので、このソースコードのおかしいところを指摘してほしいです。よろしお願いします。
2
-
3
-
4
-
5
- 大丈夫です。よろしくお願いします。
6
-
7
- おそらくポップ関数とプッシュ関数のところが間違ってると思います。
8
2
 
9
3
  visual studio 2019で書いております。
10
4