C言語の初心者です
C言語の課題がどうしてもわからないので教えてください
・1~50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。
ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。
・カード初期状態を表示したあと、乱数を用いた番号の抽選を開始する。ENTER キーの入力
で、乱数を取得し番号に適用する。
・抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、
カードのその番号のマスを空け(0 に書き換え)、最新のカードの状態を表示する。
・抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。
・カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ
ンゴしたとみなす。
・番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ
グラムを終了する
- ビンゴゲームのプログラム -
Re:- ビンゴゲームのプログラム -
#include <stdio.h> #include <stdlib.h> #include <time.h> int i, j; int w; int state[50]; int card[5][5]; int GetNumber() { while (1) { w = rand() % 50 + 1; if (state[w] == 0) { state[w] = 1; break; } } return w; } void Disp() { for (i=0; i<5; i++) { for (j=0; j<5; j++) { printf("%.2d ", card[j]); } printf("\n"); } } // 抽選によって選ばれた番号がカードにあった場合、番号表示とともにその旨を表示し、 // カードのその番号のマスを空け(0 に書き換え) int NumberCheck(int n) { for (i=0; i<5; i++) { for (j=0; j<5; j++) { if (card[j] == n) { printf("%.2dはある\n", n); card[j] = 0; return 1; } } } printf("%.2dはない\n", n); return 0; } // カードの縦、横、斜めいずれか1列が全て空いたら(いずれか1 列に0 が並んだら)、ビ // ンゴしたとみなす。 int BingoCheck() { for (i=0; i<5; i++) { w = 0; for (j=0; j<5; j++) { w += card[j]; } if (w == 0) { return 1; } } for (i=0; i<5; i++) { w = 0; for (j=0; j<5; j++) { w += card[j]; } if (w == 0) { return 1; } } w = 0; for (i=0; i<5; i++) { w += card; } if (w == 0) { return 1; } w = 0; for (i=0; i<5; i++) { w += card[4-i]; } if (w == 0) { return 1; } return 0; } int main() { srand((unsigned)time(NULL)); for (i=0; i<50; i++) { state = 0; } // 1~50 の番号がランダムに配置された5 行×5 列のビンゴカードを作成する。 for (i=0; i<5; i++) { for (j=0; j<5; j++) { card[j] = GetNumber(); } } // ただし、カード中央のマスには、マスが空いた状態を表す0 をあらかじめ配置しておく。 card[2][2] = 0; for (i=0; i<50; i++) { state[i] = 0; } // カード初期状態を表示 Disp(); // 番号の抽選とカードの書き換え、およびカードのチェックを繰返し、ビンゴしたらプロ // グラムを終了する while (1) { // ENTER キーの入力 printf("ENTER"); getchar(); // 乱数を取得し番号に適用する。乱数を用いた番号の抽選を開始する if (NumberCheck(GetNumber())) { // 最新のカードの状態を表示する。 Disp(); // 抽選によって選ばれた番号がカードにあった場合、ビンゴしたかどうかカードをチェックする。 if (BingoCheck()) { printf("ビンゴ\n"); break; } } } printf("終了\n"); return 0; }