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)