KWALIFIKACJA INF2 + INF3 - CZERWIEC 2014

PYTANIE NR 19.
Zakładając, że zmienna liczby jest wypełnioną, dziesięcioelementową tablicą typu int, to fragment programu
Ilustracja przedstawia fragment kodu w języku programowania C/C++.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne jest "zlicza dodatnie i ujemne elementy tablicy", gdy w kodzie występuje przejście po 10 elementach oraz dwa liczniki zwiększane zależnie od warunku porównania z 0.
Wyszukiwanie min/max wymaga aktualizacji wartości ekstremum, a sumowanie parzystych/nieparzystych – akumulacji sumy i sprawdzania %2.

Pełne wyjaśnienie:

W zadaniach z tablicami typu int często spotyka się schemat: przejść pętlą po wszystkich elementach i dla każdego elementu wykonać instrukcję if, która zwiększa odpowiedni licznik. Taki wzorzec nie zmienia zawartości tablicy, tylko tworzy statystykę na podstawie warunku.

Odpowiedź "zlicza dodatnie i ujemne elementy tablicy" jest właściwa wtedy, gdy w fragmencie programu widać:

  • iterację po 10-elementowej tablicy (np. pętla od indeksu 0 do 9),
  • porównanie elementu z zerem (np. > 0 i/lub < 0),
  • dwa liczniki (np. plus i minus) inkrementowane w zależności od wyniku porównania.

Pozostałe odpowiedzi opisują inne, charakterystyczne wzorce kodu:

  • "wyszukuje maksymalny i minimalny element tablicy" – do tego potrzebujesz zmiennych przechowujących aktualne min i max oraz instrukcji przypisania, które je aktualizują, gdy znajdziesz mniejszy/większy element. Samo przechodzenie po tablicy i porównywanie bez aktualizacji nie daje wyniku min/max.
  • "sumuje parzyste i nieparzyste elementy tablicy" – tu kluczowe jest dodawanie wartości elementów do dwóch sum (akumulacja) oraz test parzystości, zwykle przez operator reszty z dzielenia (% 2). Bez tego kod nie realizuje sumowania według parzystości.
  • "wprowadzania do tablicy elementy spełniające warunki podane w wyrażeniu if" – to sugeruje modyfikację tablicy (np. przypisania do liczby[i] albo budowanie nowej tablicy). Samo zliczanie spełnień warunku nie jest "wprowadzaniem" danych.

Wskazówka egzaminacyjna: gdy widzisz w pętli wyłącznie inkrementację liczników (++) zależną od warunku, najczęściej jest to zadanie o zliczaniu, a nie o szukaniu ekstremów czy sumowaniu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To policzenie, ile wartości w tablicy jest większych od zera i ile jest mniejszych od zera. Robi się to zwykle pętlą po wszystkich elementach oraz dwoma licznikami zwiększanymi w instrukcji if (np. dla warunków > 0 i < 0).
Zliczanie zwykle wygląda jak licznik++ po spełnieniu warunku. Sumowanie wymaga dodawania wartości elementu do zmiennej sumy, np. suma += tab[i]. Jeśli w pętli nie ma akumulacji sumy, a jedynie inkrementacja, to jest to zliczanie.
Bo dodatnie i ujemne to dwie różne kategorie. Osobne liczniki pozwalają niezależnie policzyć oba zbiory. Gdy użyjesz jednego licznika, tracisz informację o rozkładzie. Alternatywnie można liczyć jeden typ i wyznaczać drugi z długości, ale tylko jeśli poprawnie obsłużysz zera.
0 nie jest ani liczbą dodatnią, ani ujemną. W praktyce kod może ją pominąć (brak inkrementacji), albo zaliczać do osobnej kategorii (trzeci licznik). Na egzaminie sprawdź, czy warunki są > 0/< 0, czy np. >= 0.
Najczęściej są to porównania z zerem: tab[i] > 0 dla dodatnich i tab[i] < 0 dla ujemnych, czasem w układzie if + else if. Jeśli widzisz takie warunki i inkrementację liczników, chodzi o zliczanie znaków.
Min/max wymaga zmiennych przechowujących aktualne ekstremum i przypisań typu max = tab[i] po spełnieniu warunku. Zliczanie zwykle nie zmienia żadnej wartości ekstremalnej, tylko zwiększa liczniki. Brak przypisań aktualizujących min/max to mocna wskazówka.
Nie. Sortowanie jest zbędne i zwiększa złożoność. Do zliczania wystarczy jedno przejście po tablicy (pętla) i proste porównania. Sortowanie mogłoby pomóc w innych zadaniach (np. medianie), ale nie jest najprostszą ani typową metodą liczenia dodatnich/ujemnych.
Najczęstsze to: błędne warunki (np. >= 0 zamiast > 0), nieuwzględnienie zera, pomylenie z sumowaniem (użycie += zamiast ++) oraz zły zakres pętli (np. 0..10 zamiast 0..9 dla 10 elementów).
Ustaw dwa liczniki na 0. Przejdź pętlą po wszystkich elementach. Jeśli element jest większy od 0, zwiększ licznik dodatnich. Jeśli jest mniejszy od 0, zwiększ licznik ujemnych. Na końcu masz gotowe wyniki. To klasyczny wzorzec "pętla + if + liczniki".
Przećwicz krótkie fragmenty kodu: zliczanie spełnień warunku, filtrowanie, sumowanie, min/max. Ucz się rozpoznawać wzorce: ++ oznacza zliczanie, += sumowanie, przypisania w if często min/max. Analizuj też przypadki brzegowe (0, zakres pętli).
info

To pytanie poprawnie rozwiązuje 59% zdających egzamin. średnie

Źródła:

  • ISO/IEC 9899:2018 (C18), sekcje dot. instrukcji if oraz iteracji (pętle) i typów całkowitych
  • cppreference.com – C: if statement https://en.cppreference.com/w/c/language/if (dostęp: 2026-03-01)
  • cppreference.com – C: arrays https://en.cppreference.com/w/c/language/array (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja języka C/C++: instrukcja if, pętle i tablice
  • Materiały do INF.2 z podstaw programowania strukturalnego (tablice, pętle, liczniki)
  • Zadania treningowe: zliczanie elementów spełniających warunek w tablicy

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego