Średnia arytmetyczna Średnią arytmetyczną a zbioru n liczb a1 , a 2 ,…, a n obliczamy sumując te liczby i dzieląc wynik przez ilość liczb: a= a1 + a 2 + n + an . Warto pamiętać, że istnieją też inne rodzaje średnich: do najczęściej używanych należą średnia geometryczna oraz średnia harmoniczna. Użytkownik wprowadza liczbę naturalną n oraz n-elementową tablicę liczb rzeczywistych A. Podaj algorytm znajdowania średniej arytmetycznej elementów tablicy A. Specyfikacja algorytmu: Dane wejściowe: liczba naturalna n tablica liczb rzeczywistych A posiadająca n elementów Dane wyjściowe: liczba rzeczywista średnia – średnia arytmetyczna elementów tablicy A a) Przedstaw ten algorytm w formie opisu kolejnych kroków. b) Zaprezentuj ten algorytm w formie schematu blokowego. c) Napisz program realizujący ten algorytm w wybranym przez siebie języku programowania (Pascal, C lub C++). Oto przykład działania takiego programu: Podaj n: 5 Podaj elementy tablicy: 12 Średnia arytmetyczna = 10.2 3 19 10 7 Przykładowe rozwiązanie Potrzebna będzie nam jedna pomocnicza zmienna i – liczba naturalna oznaczająca numer kolejnego elementu tablicy A. Do obliczenia wartości sumy elementów można wykorzystać wymienioną w specyfikacji zmienną średnia. Na początku otrzyma ona wartość 0, po czym będziemy do niej dodawać kolejne elementy tablicy A. Po przeszukaniu całej tablicy zmienna średnia zawiera więc sumę wszystkich elementów tablicy. Teraz wystarczy jedynie podzielić ją przez n i otrzymujemy żądaną średnią arytmetyczną. Uzupełniamy zatem specyfikację algorytmu o potrzebne elementy: Zmienna pomocnicza: Notacja: liczba naturalna i – numer kolejnego elementu tablicy A elementy tablicy są numerowane od 1 do n Opis kolejnych kroków – pkt a) Krok 1: Wczytaj liczbę n oraz elementy tablicy A[1], ..., A[n]. Krok 2: Zmiennej średnia przypisz wartość 0. Zmiennej i przypisz wartość 1. Krok 3: Jeśli i jest większe od n, wtedy zmiennej średnia przypisz wartość ilorazu średnia/n, a następnie wypisz wartość zmiennej średnia i zakończ działanie algorytmu. Krok 4: Powiększ wartość zmiennej średnia o wartość A[i]. Krok 5: Powiększ o 1 wartość zmiennej i, po czym przejdź do kroku 3. Schemat blokowy – pkt b) Wczytaj n, A[1], ..., A[n] Start średnia ← 0 i←1 NIE średnia ← średnia + A[i] i←i+1 i>n ? TAK średnia ← średnia/n Wypisz max Stop Program w języku Pascal – pkt c) program SredniaArytmetyczna; { Obliczanie średniej arytmetycznej } const ROZMIAR = 1000; var A: array [1..ROZMIAR] of real; srednia: real; n, i: integer; begin write('Podaj n: '); readln(n); write('Podaj elementy tablicy: '); for i:=1 to n do read(A[i]); srednia := 0; for i:=1 to n do srednia := srednia + A[i]; srednia := srednia/n; writeln('Średnia arytmetyczna = ', srednia) end. Uwaga: Stała ROZMIAR określa maksymalną liczbę elementów tablicy. Program w języku C++ – pkt c) // Obliczanie średniej arytmetycznej #include <iostream> #define ROZMIAR 1000 main() { int n; double A[ROZMIAR], srednia=0; cout << "Podaj n: "; cin >> n; cout << "Podaj elementy tablicy: "; for(int i=0; i<n; i++) cin >> A[i]; for(int i=0; i<n; i++) srednia += A[i]; cout << "Średnia arytmetyczna = " << srednia; } Uwaga: Stała ROZMIAR określa maksymalną liczbę elementów tablicy.