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: Programowanie webowe 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. Test liczby pierwszej wymaga sprawdzenia wielu dzielników, a tu jest tylko reszta z dzielenia przez 2.
B. wszystkie liczby
Źle. Wypisanie poprzedza warunek if, więc nie każda liczba trafia na ekran.
C. jedynie liczby parzyste
Dobrze. Warunek liczba % 2 == 0 przepuszcza tylko liczby parzyste.
D. wyłącznie liczby nieparzyste
Źle. Liczby nieparzyste dają resztę 1 (lub -1), więc warunek == 0 je pomija.

Pytanie z egzaminu CKE, styczeń 2020 (arkusz EE.09-SG-20.01).

Program wypisuje jedynie liczby parzyste. Pętla while (liczba != 0) wczytuje kolejne liczby, dopóki użytkownik nie poda zera. Warunek if ((liczba % 2) == 0) sprawdza resztę z dzielenia przez 2: reszta 0 oznacza liczbę parzystą i tylko wtedy wykonuje się cout << liczba << endl;. Liczby nieparzyste dają resztę różną od zera i są pomijane. Do zapamiętania: % 2 == 0 to test parzystości, % 2 != 0 nieparzystości. Operator % z innym dzielnikiem sprawdza podzielność, na przykład liczba % 3 == 0 wybiera wielokrotności trzech. Zero nie zostanie wypisane, bo kończy pętlę, zanim dojdzie do sprawdzenia warunku. Przykład: dla danych 3, 8, -4, 7, 0 program wypisze 8 i -4.
Najczęstszy błąd to przeoczenie warunku if w pętli. Wypisanie wszystkich liczb wymagałoby instrukcji cout bez żadnego warunku, a tu stoi ona wewnątrz if. Liczby nieparzyste dają przy dzieleniu przez 2 resztę różną od zera, więc warunek (liczba % 2) == 0 jest dla nich fałszywy - zostałyby wypisane dopiero przy teście != 0. Liczby pierwsze wymagają sprawdzenia dzielników od 2 do pierwiastka z liczby, zwykle w dodatkowej pętli, a tu jest tylko jedno dzielenie przez 2. Jedyna liczba, która jest jednocześnie pierwsza i parzysta, to 2, ale program wypisze też 4, 6 czy 100. Wynik to zatem wyłącznie liczby parzyste, w tym ujemne, bo na przykład -4 % 2 daje 0. Ciekawa jest też rola zera: kończy ono wczytywanie i samo nie jest wypisywane, choć jest liczbą parzystą - pętla przerywa się, zanim dojdzie do warunku if.

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.