Źródło: Arkusze CKE
W zaprezentowanym fragmencie kodu występuje błąd logiczny. Na czym on polega?
int x = 0;
while (x != 0 || x != 5) {
std::cout << x << " ";
x++;
}
Warianty odpowiedzi
-
A
Niewłaściwym warunku pętli, co powoduje, że pętla nigdy się nie wykona.
-
B
Braku zainicjowania zmiennej x, co powoduje, że zmienna nie ma wartości początkowej.
-
C
Niepoprawnym użyciu funkcji cout, co skutkuje tym, że zmienna jest wczytywana w pętli.
-
D
Nieprawidłowym warunku pętli, który sprawia, że pętla jest nieskończona.
Wyjaśnienie
Spójrz na warunek w pętli: x != 0 || x != 5. Użyto tu spójnika LUB (||).
Aby pętla się zatrzymała, cały warunek musiałby okazać się fałszywy. Jednak dla dowolnej liczby x niemożliwe jest, aby była ona jednocześnie równa 0 oraz równa 5.
Gdy x wynosi 0, drugi członek (0 != 5) jest prawdziwy, więc pętla działa. Gdy x wzrośnie do 5, pierwszy członek (5 != 0) staje się prawdziwy i pętla znów się wykonuje.
Ten błąd logiczny sprawia, że warunek zawsze zwraca prawdę, co tworzy nieskończoną pętlę.