乱数を2次元配列に格納していますが、いくつかの数値は側部/境界線にあるように見えます。私は何が間違っているのか分かりません。私が望むのは、すべての乱数を2次元配列の境界の内側に持つことです。ここで乱数を2次元配列に格納する
#include <stdio.h>
#include <stdlib.h>
#define ROW 9
#define COL 9
void gameboard(char box[ROW][COL])
{
int x,y;
for(x = 0; x < ROW; x++)
{
for(y = 0; y <COL; y++)
{
box[x][y] =' ';
}
}
for(x = 0; x < ROW; x++)
{
box[0][x]='#';
box[x][8]='#';
box[x][0]='#';
box[8][x]='#';
}
}
void rnum(char box[ROW][COL])
{
int x,r1,r2,r3,r4;
char r='1';
srand((unsigned) time(NULL));
for(x=0;x<9;x++)
{
r1 = rand()%9;
r2 = rand()%9;
r3 = rand()%9;
r4 = rand()%9;
box[r1][r2]= r + x;
box[r3][r4]= r + x;
}
}
int main(void)
{
char box[ROW][COL];
char name[20];
int x,y,choice;
gameboard(box);
rnum(box);
for(x = 0; x < ROW; x++)
{
for(y = 0; y < COL; y++)
{
printf(" %c ",box[x][y]);
}
printf("\n\n");
}
rnum(box);
return 0;
}
は出力です:
境界に注意してください。 '# '記号がすでに存在しているため、要素' 0 'または' 8 'は上書きされません。 rnum()のforループは次のとおりです。for(x = 0; x <7; x ++) { r1 = 1 + rand()%7;r2 = 1 + rand()%7; r3 = 1 + rand()%7;r4 = 1 + rand()%7; box [r1] [r2] = r + x; ボックス[r3] [r4] = r + x; } ' – user3078414
恐ろしい!できます !ありがとうございました。 – CODEr