意図しない出力がでます。
Posted: 2019年7月10日(水) 20:38
ランダム数字を発生させた関数で、同一数字が出たら再計算させるプログラムの
つもりでしたが、終わらず再計算後を繰り返えしてしまいます。
X ,Y は整数
結果:
NG 4 14 15 16 31 32 34 // NGの時、ここで終わらせたいのに繰り返すのはなぜですか?
NG NG NG NG NG 3 6 7 8 13 14 25
つもりでしたが、終わらず再計算後を繰り返えしてしまいます。
X ,Y は整数
void keisan(int x,int y){
static int flag;
int temp = 0;
int num[x];
if(flag == 0){
srand((unsigned int)time(NULL));
flag =1;}
rand();rand();rand();rand();rand();rand(); // 空回し
for(int i = 0;i < x;+i++){
num[i] = rand()%y+1;
}
for(int i = 0;i < x;i++){ //昇順に並べ替え
for(int j = 0; j < x;j++){
if(num[i] < num[j]){
temp = num[i];
num[i] = num[j];
num[j] = temp; }
}
}
/* 同一数字があれば再帰 */
while(num[0] == num[1] || num[1] == num[2] || num[2] == num[3] ||
num[3] == num[4] || num[4] == num[5] || num[5] == num[6]){
printf("NG ");
keisan(x,y);
}for(int i = 0;i < x;i++){
printf("%d ",num[i]);
}printf("\n");
}
結果:
NG 4 14 15 16 31 32 34 // NGの時、ここで終わらせたいのに繰り返すのはなぜですか?
NG NG NG NG NG 3 6 7 8 13 14 25