Нужно объяснить, как работает этот код - PullRequest
0 голосов
/ 29 марта 2019

Я изучаю C в колледже, и я не понимаю этот фрагмент кода, который написал мой профессор, и он не имеет объяснения (я знаю, что он добавляет случайное число от 0 до 99 к следующему элементу массива, но не знаю как)

srandom(time(NULL));

for(i = 0; i < n; i++)
    a[i] = i == 0 ? random() % 100 : a[i-1] + random() % 100;

Хотя он работает как задумано, я просто хотел бы понять, как он добавляет числа к следующему элементу массива без "+ =" или что-то в этом роде.

Ответы [ 2 ]

6 голосов
/ 29 марта 2019

Вы можете переписать это так:

for(i=0;i<n;i++) {
    if (i == 0) {
        a[i] = random()%100;
    } else {
        a[i] = a[i-1] + random()%100;
    }
}

Итак, вы видите, что значение в a[1] равно a[0] + random()%100 и так далее. if необходим, потому что когда i равен 0, у вас нет предыдущих значений (a[-1] будет ошибкой). Тернарный оператор condition ? a : b можно прочитать как «если условие истинно, a; еще b».

1 голос
/ 29 марта 2019

Вы можете посмотреть на это так:

srandom(time(NULL));

for (i = 0; i < n; i++){
    if (i == 0){
        a[i] = random() % 100; // random number module 100 will give number between 0 and 99 inclusive
    }
    else{
        a[i] = a[i - 1] + random() % 100; // a[i] will get value equal to sum of previous array value a[i - 1] and new random number between 0 and 99
    }
}

В цикле for у вас есть i ++, который увеличивает индекс на единицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...