以前、ビンゴの作成に関する質問をして、コードの改良を行ったのですが、どうしてもわからないことがあるので知恵をお借りしたいです。
作成条件は
・5X5のカード
・数値が重複しないようにする。
・数値の範囲は07515,縦二列目は16
・縦一列目は130,縦三列目は3145,縦四列目は4660,縦五列目は6175の範囲で作成
下記のコードでビンゴ変数代入時に15ずつ動くように設定しようとしたのですが、出力時に数値が重複してしまい、値が15ずつずれないです。
どの箇所が問題なのかご指摘をいただきたいです。できればコードも載せていただけると非常にありがたいです。
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5#define BINGO_HEIGHT (5)//縦5 6#define BINGO_WIDTH (5)//横5 7#define MAX_NUM (15)//数値範囲(最大値15*5=75) 8 9int main(void) 10{ 11 int bingo[BINGO_HEIGHT][BINGO_WIDTH];//ビンゴカード 12 int number[MAX_NUM];//ビンゴナンバー 13 int i; 14 int j; 15 int k; 16 int s; 17 18 srand((unsigned)time(NULL));/* 乱数系列の変更 */ 19 20 21 for (s = 0; s < MAX_NUM; s++) {//配列初期化 22 number[s] = s; 23 } 24 25 26 27 //bingo変数への代入 28 for (i = 0; i < BINGO_HEIGHT; i++) { 29 k = rand() % (MAX_NUM);//乱数生成 30 31 for (j = 0; j <BINGO_WIDTH; j++) { 32 if (j==0) { 33 bingo[i][0] = number[k]+(k*0); 34 } 35 else if (j == 1) { 36 bingo[i][1] = number[k] + (k*1); 37 } 38 else if (j == 2) { 39 bingo[i][2] = number[k] + (k*2); 40 } 41 else if (j == 3) { 42 bingo[i][3] = number[k] + (k*3); 43 } 44 else if (j == 4) { 45 bingo[i][4] = number[k] + (k*4); 46 } 47 } 48 } 49 50 51 //bingo変数の表示 52 for (i = 0; i <BINGO_HEIGHT; i++) { 53 for (j = 0; j <BINGO_WIDTH; j++) { 54 printf("%2d ", bingo[i][j] );//出力 55 } 56 putchar('\n');//改行 57 } 58 return 0; 59}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。