Schemat blokowy ma w rombie warunek logiczny: (a<>0) lub (a<0). W zapisie algorytmicznym symbol <> oznacza nierówność, czyli "różne". W języku C++ odpowiednikiem jest operator !=. Słowo "lub" oznacza dysjunkcję logiczną, której odpowiednikiem w C++ jest operator ||.
Dlatego poprawny warunek w instrukcji if to: (a != 0) || (a < 0). Taki zapis oznacza, że blok po if wykona się, gdy spełniony jest przynajmniej jeden z warunków składowych:
- a jest różne od zera (czyli a < 0 albo a > 0),
- a jest mniejsze od zera (a < 0).
W praktyce dla każdej liczby ujemnej warunek będzie prawdziwy (oba człony), dla każdej dodatniej także będzie prawdziwy (pierwszy człon), a fałszywy będzie tylko dla a=0. To dokładnie odpowiada gałęziom schematu: przy "Tak" wypisywany jest tekst "a<>0", a przy "Nie" wypisywany jest "a=0".
Pozostałe propozycje są błędne z typowych powodów egzaminacyjnych:
- Użycie && wymaga, by oba warunki były prawdziwe naraz, co zmienia sens (dla a>0 drugi człon a<0 jest fałszywy).
- Zapisy Not i Or nie są standardową składnią operatorów logicznych w C++; poprawne są ! oraz ||.
Wskazówka do zadań tego typu: przepisz warunek "słowo po słowie" na operatory języka (np. <> → !=, "lub" → ||), a potem sprawdź trzy przypadki testowe: a<0, a=0, a>0.