C言語は自動的にカードを発行するプログラムを実現します。


C言語は自動的にカードを発行します。参考にしてください。具体的な内容は以下の通りです。
トランプのセットは52枚あります。ブリッジをする時は4人に分けてください。自動発行の作業を完了するためのプログラムを設計してください。要求:スペードはS(Spaces)で表し、ハートはH(Hearts)で表し、ダイヤはD(Diamonds)で表し、梅はC(Clubs)で表します。
分析:
配列表現のトランプを設定する
配列表現プレイヤーを設定する
トランプに特定の標識をつけます。結果を得たら、自分の手の中のスペードにはどんなものがありますか?ブロックには何がありますか?
初歩的な考え:
4つの文字配列をセットして梅の花牌を4つ保存し、4つの文字配列を設定して4人のプレイヤーが割り当てた牌を表します。
1枚のカードをランダムに4人のプレイヤーに送ります。プレイヤーの持ち札数が13に達したら、もうこのプレイヤーカードに割り当てません。
コードの展示:

void mycode_13()
{
 srand(unsigned(time(NULL)));
 /*   */
 char S[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
 char H[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
 char D[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
 char C[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };

 /*4   */
 char player1[13], player2[13], player3[13], player4[13];
 int p1 = 0, p2 = 0, p3 = 0, p4 = 0;

 distribution(S, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
 distribution(H, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
 distribution(D, player1, player2, player3, player4, &p1, &p2, &p3, &p4);
 distribution(C, player1, player2, player3, player4, &p1, &p2, &p3, &p4);

 puts("    ");

 for (int i = 0; i < 13; i++)
 printf("%c ", player1[i]);
 putchar('
'); for (int i = 0; i < 13; i++) printf("%c ", player2[i]); putchar('
'); for (int i = 0; i < 13; i++) printf("%c ", player3[i]); putchar('
'); for (int i = 0; i < 13; i++) printf("%c ", player4[i]); } void distribution(char * S_H_D_C, char * player1, char * player2, char * player3, char * player4, int *p1, int *p2, int *p3, int *p4) { static int h = 1; int r; int a = *p1, b = *p2, c = *p3, d = *p4; for (int i = 0; i < 13; i++) { r = (rand() % 4) + 1; while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13)) r = (rand() % 4) + 1; switch (r) { case 1: player1[(*p1)++] = S_H_D_C[i]; break; case 2: player2[(*p2)++] = S_H_D_C[i]; break; case 3: player3[(*p3)++] = S_H_D_C[i]; break; case 4: player4[(*p4)++] = S_H_D_C[i]; break; default: break; } } switch (h++) { case 1: printf(" :
"); break; case 2: printf(" :
"); break; case 3: printf(" :
"); break; case 4: printf(" :
"); break; } printf("Player1:"); for (int i = a; i < (*p1); i++) printf("%c ", player1[i]); putchar('
'); printf("Player2:"); for (int i = b; i < (*p2); i++) printf("%c ", player2[i]); putchar('
'); printf("Player3:"); for (int i = c; i < (*p3); i++) printf("%c ", player3[i]); putchar('
'); printf("Player4:"); for (int i = d; i < (*p4); i++) printf("%c ", player4[i]); putchar('
'); }
次のコードは、誰かが13枚のカードを手に入れた後、カードを取らないことを保証します。

r = (rand() % 4) + 1;
 while ((r == 1 && (*p1) == 13) || (r == 2 && (*p2) == 13) || (r == 3 && (*p3) == 13) || (r == 4 && (*p4) == 13))
  r = (rand() % 4) + 1;
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。