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

回答編集履歴

2

コード追記

2020/07/10 09:07

投稿

fana
fana

スコア12227

answer CHANGED
@@ -1,4 +1,32 @@
1
1
  提示されたコードとは無関係な話になりますが…
2
2
 
3
3
  「現実世界でカードを配る状況」を模倣するのがわかりやすいのではないでしょうか.
4
- すなわち,最初にシャッフルして,あとは1枚ずつ取り出していく.
4
+ すなわち,最初にシャッフルして,あとは1枚ずつ取り出していく.
5
+
6
+ ---
7
+
8
+ コードの雰囲気を示しますが,シャッフルするところは自身で解決してください.
9
+ 「C言語 配列 シャッフル」とか「C言語 配列 ランダムシャッフル」とかで検索すれば,方法論はすぐ見つかると思うので.
10
+
11
+ ```C
12
+ unsigned char Cards[52];
13
+ unsigned char NextIndexForCards = 0xFF;
14
+
15
+ //デックの初期化
16
+ void Initialize_Deck()
17
+ {
18
+ unsigned char i;
19
+ NextIndexForCards = 0;
20
+ for( i=0; i<52; ++i ){ Cards[i] = i+1; }
21
+
22
+ //TODO : ここで配列Cardsの内容を適当にシャッフルする
23
+ }
24
+
25
+ //デックから1枚カードを引く.
26
+ //カードが残っていない場合は0を返す.
27
+ int Draw_Card()
28
+ {
29
+ if( NextIndexForCards >= 52 )return 0;
30
+ return (int)Cards[ NextIndexForCards++ ];
31
+ }
32
+ ```

1

1文字抜けていたのを修正

2020/07/10 09:07

投稿

fana
fana

スコア12227

answer CHANGED
@@ -1,4 +1,4 @@
1
- 提示されたコードは無関係な話になりますが…
1
+ 提示されたコードは無関係な話になりますが…
2
2
 
3
3
  「現実世界でカードを配る状況」を模倣するのがわかりやすいのではないでしょうか.
4
4
  すなわち,最初にシャッフルして,あとは1枚ずつ取り出していく.