У меня есть два массива из 10 чисел, содержащих случайные плавающие числа от 0 до 1. Предположим, что a[10]
и b[10]
. Теперь я генерирую случайное число с плавающей запятой между 0 и 1 в переменной c
, используя первый цикл for
, а затем сравнивая его с 'b' во втором цикле for
.Выход из внутреннего цикла, когда условие истинно
Когда условие истинно, цикл 2 for
должен остановиться и вернуться к предыдущему циклу for
, чтобы сгенерировать следующее случайное число. Проблема заключается в том, что я пробовал несколько методов (увеличение k до максимального предела в условии if или break
или функция goto
для выхода из цикла, когда условие истинно, но ни один из них не работает правильно и иногда дает мне значение для мусора.
очевидно, что случайное число будет меньше или равно «Ъ» в некоторых точках, поскольку оба имеют номера в диапазоне от 0 до 1.
int d;
float e[10];
a={0.3,0.9,1,0.2,0.11,0.21,0.43,0.64,0.55,0.88};
b={0.4,0.7,0.78,0.11,0.49,0.2,0.13,0.74,0.65,0.98};
for (int j=0; j<10; j++) //first for loop for generating random number
{
float c=(float)rand()/((float)RAND_MAX);
for (k=0; k<10; k++) // 2nd for loop for comparison with generated number
{
if (c<=b)
{
d=k;
e[k]=a[d];
printf("%f\n",e);
k=10;
//goto jmp;
//break;
}
}
//jmp: printf("\n");
}
вы могли бы используйте 2 указателя на 2 разных развлечения вместо этого это сложнее писать и обрабатывать, более «функциональные». – user2485710
Вы имели в виду 'e [j] = a [k]'? –
if (c <= b) это, вероятно, неверно – Joze