średnia N podawanych liczb

0

Napisz program, który obliczy średnią N podawanych przez użytkownika liczb

#include<iostream>
using namespace std;
int main()
{
    float suma=0;
    int licznik=0,a,i;
    cout<<"Podaj ilosc liczb";
    cin>>licznik;
    cout<<"Podaj swoje liczby"<<endl;
    for(int i=1;i<=licznik;i++)
    {
        cin>>a;
        if(a<=0)
        {
            i--;
            cout<<"Podaj liczbe wieksza od zera"<<endl;
        }
        else
        suma +=a;
    }
    cout<<"Srednia wynosi:"<< suma /licznik<<endl;
    return 0;
}

Pytanie czy da się to jakoś uprościć ?

0

Ja zrobił bym to tak

#include <iostream>
using namespace std;

int main()
{
    unsigned long long int suma = 0;
    int ile = 0;
    cout << "ile liczb?\n";
    cin >> ile;
    for (int i = 0; i < ile; i++)
    {
        int liczba = 0;
        cout << "podaj liczbę\n";
        cin >> liczba;
        while (liczba <= 0)
        {
            cout << "większą od zera\n";
            cin >> liczba;
        }
        suma += liczba;
    }
    cout << "srednia to " << suma / double(ile);
    return 0;
}
0

Oba kody są trochę dziwne. Dlaczego ilość liczb może być ujemna lub równa zero, a "uśredniane" liczby muszą być dodatnie?

0

Wersja poprawiona

#include <iostream>
using namespace std;

int main()
{
    long long int suma = 0;
    int ile = 0;
    cout << "ile liczb?\n";
    cin >> ile;
    while (ile <= 0)
    {
        if (ile == 0) cout << "nie ma liczb nie ma średniej\n";
        else cout << "ujemnych nie obsługujemy, próbuj dalej\n";
        cin >> ile;
    }

    for (int i = 0; i < ile; i++)
    {
        int liczba = 0;
        cout << "podaj liczbę\n";
        cin >> liczba;
        suma += liczba;
    }
    cout << "srednia to " << suma / double(ile);
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1