Индекс элемента в массиве изменяется, но значение не

#arrays #c

#массивы #c

Вопрос:

не могли бы вы объяснить, почему var ndx меняется каждый раз, поэтому делайте value (если используете функцию print), но не внутри цикла for, поэтому каждый раз я получаю одно и то же значение (2). И как я могу это исправить?

 int PerfNum(int ww)
{
    int prime[20] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
    int ndx = 0;
        for (int base = 2; base <= sqrt(ww); base  ) {
            for (int pw = prime[ndx]; ww >= pow(base, pw); ndx  ) {  // expected value is in array
            //for (int pw = prime[ndx]; ww >= pow(base, prime[ndx]); pw   ) { this one works but...
                if (ww == pow(base, pw)) {
                    return 1;
                }
            }

        }
        return 0;

}
  

Ответ №1:

в первой части инструкции outer for вы инициализируете переменную pw. Это происходит только один раз (ИНИЦИАЛИЗАЦИЯ), поэтому увеличение этого индекса не приведет к каким-либо последствиям для переменной pw.

 for(init operation <- occurs one time; condition <- occurs before every step; poststep operation <- occurs after every step )