KWALIFIKACJA INF2 + INF3 - CZERWIEC 2015

PYTANIE NR 19.
Za pomocą przedstawionego algorytmu oblicza się
Ilustracja przedstawia schemat blokowy algorytmu, który oblicza średnią arytmetyczną ciągu liczb zakończonego zerem.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Średnia arytmetyczna powstaje przez zsumowanie wczytanych liczb i podzielenie sumy przez ich liczbę. Jeśli algorytm wczytuje kolejne wartości aż do napotkania zera (wartownika), to zero kończy dane i nie jest elementem ciągu. Wynikiem jest więc średnia z liczb przed zerem.

Pełne wyjaśnienie:

Średnia arytmetyczna ciągu liczb to wartość obliczana według zasady:

średnia = suma elementów / liczba elementów

W algorytmach przetwarzających dane wejściowe często stosuje się tzw. wartownika (ang. sentinel) – specjalną wartość, która sygnalizuje koniec wprowadzania danych. W tym typie zadania rolę wartownika pełni 0, czyli program wczytuje liczby w pętli, a gdy pojawi się 0, przerywa wczytywanie.

Aby policzyć średnią arytmetyczną takiego ciągu, algorytm musi wykonać trzy logiczne kroki:

  • akumulować sumę (dodawać kolejne wczytane liczby do zmiennej typu suma),
  • zliczać elementy (zwiększać licznik dla każdej liczby należącej do ciągu),
  • wykonać dzielenie po zakończeniu pętli: suma/licznik.

Odpowiedź mówiąca o sumie byłaby poprawna tylko wtedy, gdyby algorytm kończył działanie na wypisaniu samej sumy (bez dzielenia). Odpowiedzi z "10 wczytanych liczb" sugerują stałą liczbę iteracji pętli (np. pętla for od 1 do 10). Jeśli jednak zakończenie jest sterowane wartością 0, liczba elementów jest zmienna i zależy od danych.

Odpowiedź o średniej geometrycznej wymagałaby zupełnie innej logiki: mnożenia elementów i wyciągnięcia pierwiastka stopnia n (lub użycia logarytmów), a nie sumowania. Dlatego w kontekście algorytmu opartego o sumę, licznik i wartownika, właściwą interpretacją wyniku jest średnia arytmetyczna wczytanego ciągu liczb zakończonego zerem.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Średnia arytmetyczna to suma wartości podzielona przez liczbę wartości. W algorytmie zwykle używa się dwóch zmiennych: suma (dodajesz kolejne liczby) i licznik (zliczasz elementy), a po zakończeniu wczytywania obliczasz: suma/licznik.
Zero może pełnić rolę wartownika (sentinel), czyli specjalnej wartości oznaczającej "koniec danych". Dzięki temu nie trzeba znać z góry liczby elementów. Kluczowe jest, aby wartownik nie był wliczany do sumy i licznika, jeśli ma tylko kończyć wczytywanie.
Jeśli algorytm tylko dodaje kolejne wartości do zmiennej suma i na końcu wypisuje sumę, to liczy sumę. Jeżeli dodatkowo zlicza elementy (licznik) i wykonuje dzielenie suma/licznik przed podaniem wyniku, to liczy średnią arytmetyczną.
Jeżeli 0 jest wartownikiem, to nie powinno być wliczane do danych, bo jego rola to tylko zakończenie pętli. Wliczenie zera zaniżałoby średnią i zmieniałoby sens zadania. W praktyce dodajesz do sumy i licznika tylko wartości "przed zerem".
Najczęstsze błędy to: dodanie wartownika do sumy, zwiększenie licznika także dla wartownika, pomylenie warunku zakończenia (np. przerwanie na innej wartości) oraz brak obsługi przypadku "brak danych" (licznik = 0), co grozi dzieleniem przez zero.
Pętla na 10 liczb ma zwykle stały licznik iteracji (np. od 1 do 10). Pętla zakończona zerem działa do momentu spełnienia warunku na danych wejściowych (pojawienie się 0). W tej drugiej liczba elementów jest zmienna i zależy od tego, co użytkownik wprowadzi.
Średnia geometryczna dla dodatnich liczb to zwykle pierwiastek n-tego stopnia z iloczynu elementów. Wymaga mnożenia (lub logarytmów), a nie sumowania. Dlatego algorytm oparty o sumę i dzielenie odpowiada średniej arytmetycznej, nie geometrycznej.
Trzeba sprawdzić, czy licznik > 0 przed wykonaniem dzielenia. Jeśli użytkownik od razu poda wartownika (np. 0 jako pierwszą wartość), nie ma danych do uśrednienia. Wtedy program powinien zwrócić komunikat lub pominąć obliczenie.
Najczęściej potrzebujesz: zmiennej na aktualnie wczytaną wartość (np. x), zmiennej na sumę (np. suma), zmiennej na liczbę elementów (np. n) oraz ewentualnie zmiennej na wynik (np. srednia). Istotne jest poprawne inicjowanie (suma=0, n=0).
Ćwicz "śledzenie" algorytmu na prostych danych: zapisuj po każdej iteracji wartości zmiennych (suma, licznik, bieżąca liczba). Zwracaj uwagę na warunek zakończenia i to, czy dana wejściowa jest przetwarzana przed sprawdzeniem warunku czy po nim (różnica między while i do-while).
info

Statystycznie 49% uczniów zna prawidłową odpowiedź. trudne

Specjaliści zwracają uwagę: "Średnia arytmetyczna powstaje przez zsumowanie wczytanych liczb i podzielenie sumy przez ich liczbę."

Źródła:

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, "Wprowadzenie do algorytmów", rozdz. 1–2 (pojęcie algorytmu i podstawowe konstrukcje iteracyjne), wydania polskie.
  • Robert Sedgewick, Kevin Wayne, "Algorithms", sekcje dotyczące prostych pętli, akumulacji i zliczania (sum/count idioms), wyd. Addison-Wesley.

Materiały:

  • Podręcznik do podstaw programowania: pętle, zmienne, wejście/wyjście
  • Materiały o algorytmach z wartownikiem (sentinel loops) i przetwarzaniu strumienia danych
  • Zadania maturalne/egzaminacyjne z interpretacji schematów blokowych i pseudokodu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego