это часть моего кода, с которой у меня проблемы. Я не могу понять, почему он делает это неправильно. У меня есть массив, где он хранит числа 0 - 25, которые являются случаями. Числа должны быть рандомизированы и переписаны в массив. Единственным условием является то, что никакое число не может быть doulbes, может быть только одно из этого числа. Я не прошу вас сделать мой код , но намекайте мне или указывайте мне направление записи. Я пытаюсь научиться:)
Проблема заключается во втором цикле do. Я могу получить случайные числа, но я получаю двойные. Я создал цикл, чтобы проверить и исправить это, но он не работает. Код работает, и двойники все еще случаются, и я не понимаю, почему. Это выглядит правильно для меня. Пожалуйста, посмотрите, спасибо (:
Это то, что я сделал изначально (в самом конце, где я сейчас нахожусь):
int check_double = 0;
int i = 0;
int counter = 0;
int array_adder = 0;
int random_number = 0;
int cases[] = {
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
};
float money[] = {
0.01,1,5,10,25,50,75,100,200,300,400,500,750,1000,5000,10000,25000,50000,750000,100000,200000,300000,400000,500000,750000,1000000
};
//Randomize all case number and realine them in the array
srand ( time(NULL) );
do
{
cases[counter]= rand() % 26;
counter += 1;
printf("%d\n", cases[counter]);
}
while (counter <= 25);
//make sure there are no doubles in the array, just 0 - 25 and not a single number repeated twice
do
{
check_double = 0;
for (i = 0; i < counter; i++)
{
if (cases[counter] == cases[i])
{
cases[counter] = rand()% 26;
check_double == 1;
}
}
}
while (check_double != 0);
В настоящее время то, чего я достиг после этого, - это прочесывание обоих циклов и проверка на удвоения в процессе работы массива. Это то, что я сделал, у него все еще есть двойники, и я не уверен, почему, я только разместил cose с обоими объединенными циклами:
do
{
cases[counter]= rand() % 26;
if (cases[counter]>=1);
for(i=0;i<=counter;i++)
if (cases[counter]==cases[i])
{
cases[counter]=rand()% 26;
}
printf("%d\n",cases[counter]);
counter+=1;
}