piątek 21 stycznia 2022 imieniny Agnieszki i Jarosława 1976 - Pierwszy lot naddźwiękowych samolotów Concorde
Do końca roku pozostało: 0 dni
Informatyka
Interaktywna mapa szkół
Język polski Historia WOS Sztuka (plastyka i muzyka) Języki obce Religia i etyka
Matematyka Fizyka i astronomia Chemia Biologia Przyroda Geografia Technika Informatyka
Przedmioty zawodowe WF Ścieżki edukacyjne Wychowanie przedszkolne Nauczanie zintegrowane Więcej
Algorytmy i programowanie - zestaw zadań

Średnia arytmetyczna

Średnią arytmetyczną zbioru n liczb obliczamy sumując te liczby i dzieląc wynik przez ilość liczb:

 

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)    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  3  19  10  7
       Średnia arytmetyczna = 10.2
 

 

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ą..

Działanie algorytmu opiera się na następującej zasadzie. Najpierw zmiennej max przypisujemy wartość pierwszego elementu tablicy czyli A[1]. Następnie przeglądamy kolejno pozostałe elementy tablicy – jeśli dany element okaże się większy od max, wtedy zmienna max otrzymuje jego wartość. W rezultacie po zakończeniu przeszukiwania tablicy zmienna max ma wartość taką samą, jak największy element tablicy.

Zmienne pomocnicze:
 liczba naturalna i – numer kolejnego elementu tablicy A
Notacja:
 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)

 

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 d)

// 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. W języku C++ elementy tablicy są numerowane od zera, stąd nieznaczna modyfikacja algorytmu. 




Autor: dr Andrzej Dyrek, mgr Agnieszka Tarnówka-Stec
Komentarze + Dodaj komentarz
  • W Pascalu jak tworzy się instrukcje złozoną to poprzedza sie ją słowem begin, Informatyk (odpowiedzi: 0)
  • Nawiasem mówiac schemat blokowy nie do tego problemu totalna porazka.
  • C++, Animatex (odpowiedzi: 0)
  • C++ jest podobne do języka PAWN
  • SIŁA!, SIŁA! (odpowiedzi: 0)
  • Biorę Double-Blast`a i nie wiem co się dzieje...
  • algorytmy, Pan:** (odpowiedzi: 0)
  • nie wiem o co chodzi :PP
  • Poprawa błędu w C++!, Gniewo (odpowiedzi: 0)
  • #include <iostream> using namespace std; int main() Poprawcie ten początek wtedy rusza. A tak na marginesie to nie wiem jak wy te dzieci do nauki ścisłych przedmiotów chcecie jeżeli zamieszczacie listing nie sprawdzony. Pozdraiwiam!
  • Niezgodność ze standardami., Bronek (odpowiedzi: 0)
  • W przykładzie Java Script powinno być tak. <script language="JavaScript> </script>
  • w c++ liczona jest suma, a nie srednia, * znaczy, że muszę to pole podać? (odpowiedzi: 0)
  • w sumie to tyle... zapomnieli podzielić przez n ;)
  • gggg, gggg (odpowiedzi: 0)
  • co za nudy
  • Blad ???, Wojtas (odpowiedzi: 6)
  • Mam pytanie, czemu w kompilatorze Dev-C++ wyskakuje mi blad, podczas kompilacji ??
  • algorytm c+, student politechnika (odpowiedzi: 0)
  • buhahahhaha. Niezly portal i niezle ucza:) W szczegolnosci podobaja mi sie programy w c++. Ciekawe tylko czy ten doktor, ktory sie pod tym podpisuje kiedykolwiek mial indeks wyzszej uczelni w reku bo juz na pewno nie kierunku informatycznego. Krotko mowiac no comment;
  • schemat blokowy jest od innego zadania, aa (odpowiedzi: 0)
  • a
  • bład w schemacie blokowym algorytmu max(a,b,c,d), Agnieszka (odpowiedzi: 0)
  • schemat blokowy punkt b) nie przedstawia rozwiązania zadania.
  • Kto to pisał?, uczen 2 gimnazjum (odpowiedzi: 2)
  • Nie chciałbym być nie uprzejmy, zawsze uczy sie od tyłu? Przecież takie zadanie można rozwiązać dużo szybciej, stosując konstrukcje języka...
 
Nasi partnerzy:
MEN SchoolNet eTwinning Związek Powiatów Polskich PCSS
Cisco OFEK Przyjazna Szkoła Fundacja Junior FIO CEO
Parafiada net PR Orange IMAX Cinema City WSP TWP
IMAGE PPI-ETC ArcaVir Master Solution Device


Projekt Polski Portal Edukacyjny Interkl@sa
powstał i był realizowany w latach 2000-2011 dzięki wsparciu
Polsko-Amerykańskiej Fundacji Wolności.

W ramach naszej witryny stosujemy pliki cookies w celu świadczenia Państwu usług na najwyższym poziomie, w tym w sposób dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym. Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies. Więcej szczegółów w naszej "Polityce Prywatności".


Pytania i uwagi: portal@interklasa.pl

Regulamin portalu /  Polityka prywatności /  Ochrona własności intelektualnej /  Zasady korzystania / 
Wyłączenie odpowiedzialności /  Biuro prasowe /  Zasady współpracy /  Redakcja /  Kontakt

Przejdź na stronę ucznia Przejdź na stronę nauczyciela Przejdź na stronę rodzica Certyfikat sieciaki.pl Przyjazna strona kidprotect.pl