int tab[10]; int zm1 = 0; double zm2 = 0; ... for (int i = 0; i < 10; i++) { zm1 = zm1 + tab[i]; } zm2 = zm1 / 10.0; Tablica tab[] jest wypełniona...
int tab[10]; int zm1 = 0; double zm2 = 0; ... for (int i = 0; i < 10; i++) { zm1 = zm1 + tab[i]; } zm2 = zm1 / 10.0;Tablica tab[] jest wypełniona dowolnymi liczbami całkowitymi. Jaka wartość znajdzie się w zmiennej zm2 po wykonaniu prezentowanego fragmentu kodu?
A. Średnia arytmetyczna liczb z tablicy.
B. Suma liczb od 1 do 10.
C. Średnia geometryczna liczb od 0 do 9.
D. Suma liczb z tablicy.
Opracowane na podstawie zadania CKE, czerwiec 2019 (arkusz EE.09-X-19.06): W arkuszu było zm2 = zm1 / 10; - w C++ to dzielenie liczb całkowitych, więc średnia zostałaby obcięta do części całkowitej. Zmieniono na zm1 / 10.0.
Poprawna odpowiedź to: Średnia arytmetyczna liczb z tablicy. Pętla for przechodzi po indeksach od 0 do 9, czyli po wszystkich 10 elementach tablicy tab. W każdej iteracji do zmiennej zm1 dodawana jest wartość tab[i], więc po zakończeniu pętli zm1 zawiera sumę wszystkich elementów tablicy. Następnie instrukcja zm2 = zm1 / 10.0 dzieli tę sumę przez liczbę elementów. Użycie 10.0, a nie 10, powoduje dzielenie zmiennoprzecinkowe, więc wynik może mieć część ułamkową. Reguła do zapamiętania: średnia arytmetyczna = suma wartości / liczba wartości. Taki schemat często stosuje się przy obliczaniu średniej ocen, pomiarów lub wyników testów zapisanych w tablicy.
W tym fragmencie istotne są dwie operacje: najpierw sumowanie elementów tablicy, a dopiero potem dzielenie tej sumy przez 10. Odpowiedź Suma liczb z tablicy opisywałaby zawartość zmiennej zm1 tuż po zakończeniu pętli, ale nie wartość zm2, ponieważ później wykonywane jest jeszcze dzielenie przez 10.0. Odpowiedź Suma liczb od 1 do 10 byłaby trafna, gdyby w pętli dodawano na przykład i + 1, a nie tab[i]. Tutaj indeks i służy tylko do wskazania elementu tablicy, nie jest dodawaną wartością. Odpowiedź Średnia geometryczna liczb od 0 do 9 wymagałaby mnożenia wartości i obliczenia pierwiastka odpowiedniego stopnia, a w kodzie występuje dodawanie oraz dzielenie. Poprawna odpowiedź to: Średnia arytmetyczna liczb z tablicy. Typowy błąd polega na pomyleniu indeksów tablicy z jej zawartością albo na pominięciu ostatniej instrukcji przypisania do zm2.