Почему это не работает для условия цикла? - PullRequest
0 голосов
/ 01 марта 2019

Попытка вывести значение компонента бета, если его индекс кратен 3. У меня есть условия, заданные в цикле for, но он только печатает компонент с индексом 0. Разве это не разрешено в цикле forсостояние?Мне действительно нужно использовать оператор if внутри цикла?

Спасибо.

double beta[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };

cout << fixed << showpoint << setprecision(2);

for (int index = 0; index < 20 && index % 3 == 0; index++)
    cout << beta[index] << endl;

Ответы [ 4 ]

0 голосов
/ 01 марта 2019

Как насчет этого короткого ответа, выполняющего все в условии цикла for?

for (int index = 0; ((index % 3) == 0 || (index++ && index++)) && index < 20 ; index++)
    cout << beta[index] << endl;

Не забывайте, что мы ставим index < 20 в конце условия.

0 голосов
/ 01 марта 2019

Условие для вашего цикла: index < 20 && index % 3 == 0 Это условие ложно при index = 1, поэтому цикл останавливается.Чтобы сделать эту работу, разделите условие на две части.Поместите один, если for и один в if.Ниже приведен код:

double beta[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };

cout << fixed << showpoint << setprecision(2);

for (int index = 0; index < 20 ; index++){      // First condition
    if (index % 3 == 0){                        // Second condition
        cout << beta[index] << endl;
    } 
}

Надеюсь, что поможет!

0 голосов
/ 01 марта 2019

Если вы попытаетесь вычислить 1 mod 3, оно будет равно 1 , так как это 2-е условие будет ложным, поэтому программа выполнит тело только тогда, когда index = 0 (remainder = 0 here) после этого начнется с1 Вы никогда не войдете в тело цикла for.Надеюсь, это поможет.

0 голосов
/ 01 марта 2019

Цикл останавливается, когда условие ложно.Для index == 1 условие ложно.

Если вы хотите, чтобы цикл пропускал итерации, используйте if в теле цикла.

Но для этого простого случая это будетлучше вместо этого просто увеличивать index на 3 на каждой итерации.

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