C中的数字检查

时间:2016-02-08 09:45:17

标签: c

(它意味着什么)

在处理“交易或不交易”项目时,我做了一个函数check(); 检查是否有两个案例是相同的,如果是,则更改其中一个,然后重新检查。

函数处理为具有奖品的案例设置随机数,然后调用check();

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void deal(void);
void check(void);


int cases[22];
int prizes[22]=1,2,3,4,5,6,8,10,15,20,25,35,50,65,85,100,105,135,165,200,250};



int main()
{   int a=0;
deal();
while (a<22){
    printf("%d \n",cases[a] );
 a++;
}

return 0;
}

void deal(void){


srand(time(NULL));
int r;
int n = 1;

while (n <= 22){
    r = rand() % 21;
    cases[n] = prizes[r];
    n++;

}//Ends while loop

check();


}//Ends function

void check(void){
int i = rand() % 21;
int m = 0;
int n = 0;

srand(time(NULL));

while(m < 22){//Nested while loop

    while ( n < 22){
        if (m == n){
            n++;
            continue;
        } else {
        if(cases[m] == cases[n]){

            cases[m] = prizes[i];
            i = rand() % 21;
            continue;
        }else{

        n++;
        continue;

        }

        }

    }//End of inside loop
m++;
n = 0;
}//End of nested loop


}//End function

然而,它打印出未经检查的数字,或未正确检查。 我正在使用代码块IDE

提前致谢。

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,有一个简单的(很常见的)算法或对阵列进行争夺。通过一次通过数组,您可以随机化每个值的位置而不重复它们。由于加扰功能的操作,现在不需要检查功能。

val result = operson.fold("NoValue")(_.pid.idVal)

详细检查scramble()函数,你会发现它非常有趣。

根据评论中的建议编辑将算法更改为单行。