Średnia arytmetyczna

Kategoria: Zadania z programowania

Średnią arytmetyczną n liczb obliczamy dzieląc sumę tych liczb przez ich ilość. Liczenie średniej arytmetycznej w C++ najlepiej wykonać mając liczby zapisane do tablicy liczb całkowitych. Innym rozwiązaniem jest pobieranie liczb bezpośrednio od użytkownika, w czasie wykonywania programu.

Kod programu w C++

Aby obliczyć średnią liczb zapisanych w tablicy wystarczy zsumować je w pętli, a następnie podzielić przez ich ilość:

#include <iostream>

using namespace std;

int main()
{
    int liczby[5] = {2,2,3,3,6};
    double srednia = 0;

    for (int i = 0; i<5; i++)
    {
        srednia = srednia + liczby[i];
    }

    srednia = srednia / 5;

    cout << "srednia liczb to " << srednia << endl;

    system("PAUSE");
    return(0);
}

Możemy także zmodyfikować program, aby pobierał od użytkownika dynamiczną ilość liczb. Wczytując liczby w pętli, musimy umówić się na jakiś znak, przy którym zakończymy wczytywanie liczb Przykładowy kod może wyglądać następująco:

#include <iostream>

using namespace std;

int main()
{
    int liczby[999];
    int licznik = 0;
    double srednia = 0;

    int liczba;

    // petla pobierajaca liczby od uzytkownika
    while(true)
    {
        cout << endl << "Wpisz liczbe numer " << licznik + 1 << ". Wpisz -1 aby zakonczyc wczytywanie. ";
        cin >> liczba;

        if (liczba < 0)
        {
            // koniec wczytywania jezeli wpisano -1
            break;
        }

        liczby[licznik] = liczba;
        licznik++;
    }

    // oblicz srednia w petli
    for (int i = 0; i<licznik; i++)
    {
        srednia = srednia + liczby[i];
    }

    srednia = srednia / licznik;

    cout << "Srednia liczb to " << srednia << endl;

    system("PAUSE");
    return(0);
}

Komentarze

Grzesiek

W języku C/C++ niezainicjowana zmienna posiada wartość niezdefinioiwaną (undefined). Prowadzi to do błędu typu „niezdefiniowane zachowanie” (undefined behavior). Błąd nie zawsze się ujawni. Debugowanie będzie trudne. Nawet w językach takich jak java, mimo że zmienne są inicjowane do wartości domyślnych podręczniki programowania zalecają wyrobienie sobie dobrego nawyku inicjowania zmiennych.

W tym programie zmienna srednia NIE MUSI mieć wartości 0, ale zwykle będzie miała. Zależy to od zawartości pamięci i rodzaju użytego kompilatora. Visual C++ zgłasza w tym programie błąd.
Powinno być:
double srednia = 0;

Grzesiek

W programie jest błąd: zmienna srednia nie została zainicjowana.

Pozdrawiam

Karol

A co to za różnica? Jaki to błąd?

Łukasz

Dzięki za pomoc artykuł się przydał.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *