как иметь или / или условие в цикле do-while в c ++ - PullRequest
0 голосов
/ 27 февраля 2012

Я пишу алгоритм, и у меня есть цикл do-while.Я хочу быть в этом цикле, пока GAP не станет достаточно маленьким или число итераций не превысит 1000. Но оно проходит 100 итераций и не останавливается.Вот код:

int iteration=1;
double UB=0;
double LB=0;
double GAP=1;

do
{...
    GAP=abs((UB-LB)/LB);
    iteration++;
}while(GAP>=0.05 || iteration<=1000);

Ответы [ 3 ]

4 голосов
/ 27 февраля 2012

Вы, вероятно, хотите && вместо ||.Вы хотите выполнять итерацию до тех пор, пока или из этих выражений не станет ложным, поэтому вы хотите выполнить итерацию, пока оба из них будут истинными.

2 голосов
/ 27 февраля 2012

Вы немного пропустили логику;)

Если вы хотите, чтобы цикл заканчивался if (conditionA или conditionB), то это означает, что вы хотите продолжить цикл if (conditionA AND conditionB).

Другими словами, вы должны иметь

while(GAP>=0.05 && iteration<=1000)
0 голосов
/ 27 февраля 2012

Вам нужно изменить '||'в '&&'

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