今はポインタについて学習しています。
初心者なので間違いなどがあったらわかりやすく指摘していただけると幸いです。
0~99までの乱数を使った5×5のビンゴで、穴は-1で表しています。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main(void)
{
int a, i, i1, i3, i4, j, j2, j3, j4, num, bingo5, x[N][N], c[100];
// ビンゴ表作成
for (i = 0; i < 100; i++) {
c[i] = 1;
}
srand(time(NULL));
for (i = 0; i < N; i++) {
for (j = 0; j < N;) {
a = rand() % 100;
if (c[a] == 1) {
x[i][j] = a;
c[a] = 0;
j++;
}
}
}
x[2][2] = -1;
// ビンゴ実行
while(1) {
// ビンゴ表出力
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%3d", x[i][j]);
}
printf("\n");
}
// 入力
printf("num = ");
scanf("%d", &num);
// ビンゴ検出
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
// 穴開け
if (x[i][j] == num) {
x[i][j] = -1;
}
// 縦ビンゴ
bingo5 = 0;
for (i1 = 0; i1 < N; i1++) {
if (x[i1][j] == -1) {
bingo5 += 1;
}
}
if (bingo5 == 5) {
break;
}
// 横ビンゴ
bingo5 = 0;
for (j2 = 0; j2 < N; j2++) {
if (x[i][j2] == -1) {
bingo5 += 1;
}
}
if (bingo5 == 5) {
break;
}
// 斜め右下ビンゴ
bingo5 = j3 = 0;
for (i3 = 0; i3 < N; i3++) {
if (x[i3][j3] == -1) {
bingo5 += 1;
}
j3++;
}
if (bingo5 == 5) {
break;
}
// 斜め右上ビンゴ
bingo5 = j4 = 0;
for (i4 = 4; i4 >= 0; i4--) {
if (x[i4][j4] == -1) {
bingo5 += 1;
}
j4++;
}
if (bingo5 == 5) {
break;
}
}
if (bingo5 == 5) {
break;
}
}
if (bingo5 == 5) {
printf("bingo\n");
break;
}
}
return 0;
}