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

Słowa kluczowe: Pętla for w C++ Tablice w C++ Średnia arytmetyczna w programowaniu

Tablica tab[] jest wypełniona dowolnymi liczbami całkowitymi. Jaka wartość znajdzie się w zmiennej zm1 po wykonaniu prezentowanego fragmentu kodu?

int tab[10];
int zm1 = 0;
…
for (int i = 0; i < 10; i++) {
    if (tab[i] % 2 == 0)
        zm1++;
}
A. Indeks ostatniej liczby parzystej w tablicy.
Źle. Indeks zapamiętałoby przypisanie zm1 = i, którego w kodzie nie ma.
B. Suma liczb parzystych z tablicy.
Źle. Suma wymagałaby zm1 = zm1 + tab[i], a zm1++ dodaje zawsze 1.
C. Liczba elementów nieparzystych w tablicy.
Źle. Warunek % 2 == 0 wybiera liczby parzyste, nie nieparzyste.
D. Liczba elementów parzystych w tablicy.
Dobrze. zm1++ wykonuje się dla każdego elementu z resztą 0 z dzielenia przez 2.

Poprawna jest odpowiedź: liczba elementów parzystych w tablicy. Pętla przechodzi przez wszystkie 10 elementów, a warunek tab[i] % 2 == 0 jest prawdziwy dla liczb parzystych, bo reszta z dzielenia ich przez 2 wynosi 0. Wtedy zm1++ zwiększa zmienną o 1, więc po pętli zm1 przechowuje liczbę takich elementów - od 0 do 10.

Do zapamiętania: w C++ warunek parzystości działa także dla liczb ujemnych (-6 % 2 daje 0), natomiast dla ujemnych nieparzystych reszta wynosi -1, a nie 1. Dlatego nieparzystość bezpieczniej sprawdzać warunkiem tab[i] % 2 != 0 niż == 1. Schemat licznik + warunek + inkrementacja to jeden z podstawowych algorytmów na tablicach.

Wybór sumy liczb parzystych wynika z pomylenia zm1++ z zm1 = zm1 + tab[i]. Inkrementacja zawsze dodaje 1, więc zmienna nie gromadzi wartości elementów, tylko liczy, ile razy warunek był spełniony. Odpowiedź o elementach nieparzystych odwraca warunek: % 2 == 0 wybiera liczby parzyste, a nieparzyste dawałyby resztę różną od zera.

Indeks ostatniej liczby parzystej wymagałby przypisania indeksu, czyli zm1 = i; - wtedy po pętli zmienna wskazywałaby pozycję ostatniego trafienia. W kodzie zmienna nigdy nie przyjmuje wartości i, tylko rośnie o jeden. Kluczem do takich zadań jest dokładne odczytanie instrukcji wykonywanej po spełnieniu warunku: inkrementacja liczy, dodawanie elementu sumuje, a przypisanie indeksu zapamiętuje pozycję. W kodzie nie ma przy tym żadnego warunku dotyczącego samego indeksu. Wartość początkowa zm1 = 0 przed pętlą potwierdza, że zmienna pełni rolę licznika.

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.