#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 )