Defekt? Ale gdzie? 4

Defekt? Ale gdzie? 4
Błąd goni błąd. Znajdź następny.

Poniższy fragment kodu C++ zawiera błąd. Znajdź go:
   
    int value;
   
    do
    {
      //....
   
      value = rand()%30;

      if (value > 20) {
        value -= rand()%40 / 2;
      }

    }
    while(!(value==5) || !(value==10));
   





































































   
   
Odpowiedź:
Jedynym przypadkiem, dla którego pętla może zostać przerwana, jest sytuacja gdy warunki value==5 i value==10 są prawdziwe jednocześnie ( a nie mogą być ).
Pętla będzie wykonywała się w nieskończoność.
Dla tak napisanego warunku zamiast operatora OR należy użyć AND:
     
      !(value==5) && !(value==10)

To powinno Cię zainteresować