Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Algorytmy i podstawy informatyki

Przedstawiony kod źródłowy, zapisany w języku C++, ma za zadanie dla wprowadzanych dowolnych całkowitych liczb różnych od zera wypisać

int main()
{
    int liczba;
    cin >> liczba;
    while (liczba != 0)
    {
        if ((liczba % 2) != 0)
            cout << liczba << endl;
        cin >> liczba;
    }
    return 0;
}
A. liczby pierwsze
Źle. Kod sprawdza tylko resztę z dzielenia przez 2 - wypisze 9, a pominie 2.
B. jedynie liczby parzyste
Źle. Liczby parzyste mają resztę 0, a warunek != 0 je pomija.
C. wyłącznie liczby nieparzyste
Dobrze. Warunek liczba % 2 != 0 przepuszcza tylko liczby nieparzyste.
D. wszystkie liczby
Źle. cout stoi wewnątrz warunku if, więc nie każda liczba zostanie wypisana.
Program wypisuje wyłącznie liczby nieparzyste. Pętla while (liczba != 0) wczytuje liczby do momentu podania zera, a warunek if ((liczba % 2) != 0) przepuszcza tylko te, które przy dzieleniu przez 2 dają resztę różną od zera. Liczby parzyste mają resztę 0, więc są pomijane. Działa to także dla liczb ujemnych: w C++ -3 % 2 daje -1, czyli wartość różną od zera, więc -3 zostanie wypisane. Do zapamiętania: != 0 przy reszcie z dzielenia przez 2 to test nieparzystości. Z tego powodu bezpieczniej pisać % 2 != 0 niż % 2 == 1, bo drugi zapis pomija nieparzyste liczby ujemne.
Najczęściej przeoczony jest operator porównania w warunku. W bliźniaczym zadaniu stoi == 0 i wtedy program wypisuje liczby parzyste; tutaj stoi != 0, co odwraca wynik testu. Wszystkie liczby trafiłyby na ekran tylko bez warunku if, a tu instrukcja cout wykonuje się wyłącznie, gdy reszta z dzielenia przez 2 jest różna od zera. Liczby pierwsze wymagałyby sprawdzenia wielu dzielników, a kod bada tylko dzielenie przez 2 - wypisze na przykład 9 i 15, które pierwsze nie są, a pominie 2, która pierwsza jest. Wynikiem są więc liczby nieparzyste, dodatnie i ujemne. Przy takich zadaniach czytaj warunek znak po znaku, bo jeden symbol zmienia sens całego programu. Przykład: dla danych 3, 8, -5, 6, 0 program wypisze 3 i -5. Zero kończy pętlę i samo nie jest wypisywane.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.