Problem z tablicą

0

Witajcie
Mam takie zadanie a właściwie jego część.
e. następnie wczytuje jeszcze N liczb całkowitych (N – stała całkowita) i drukuje, ile z nich różniło się co najwyżej o stałą rzeczywistą G od średniej tych N liczb (to wymaga zastosowania tablicy jednowymiarowej).

totalnie nie mogę załapać o co chodzi z tym porównaniem średniej ze stałą rzeczywistą.
Może ktoś coś podpowiedzieć jak to rozwiązać lub wyjaśnić z której strony to podejść.

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
    int a;
    int naj;
    int b;
    int c=0;
    int d;
    double srednia=0;
    int tab[5];
    int z_pomocnicza=0;
    /*
    cout << "Zadanie nr. 3 - Maciej Saja" << endl;
    cout << "Podaj liczbe calkowita z zakresu od 0 do 10" << endl;
    do
    {
        cin >> a;
        if(a < 0 || a > 10)
        cout << "Podana liczba nie nalezy do wymaganego zakresu!!"<< endl;
    }while(a < 0 || a > 10);

    cout << "Druga czesc programu" << endl;
    cout << "wczytamy petla FOR liczbe liczb podanych w pierwszej petli" << endl;
    cin >> naj;
    cout << endl;

    for(int i = 1; i < a; i++)
    {
        cin >> b;
        if(b > naj)
        {
            naj = b;
        }
        cout << endl;
    }

    cout << "Trzecia czesc programu no i trzecia petla" << endl;
    cout << "Wczytuj cyfry z zakresu od -9 do 9, podanie innej cyfry zakonczy wczytywanie" << endl;
    while(c > -10 && c < 10)
    {
        cin >> c;
        if(c > naj)
        {
            naj = c;
        }
    }
    cout <<  "Najwieksza wczytana liczba to " << naj << endl;
    */
    cout << "No i czas na czwarta czesc. Zaczynamy" << endl;
    cout << "Podaj stala ktorej uzyjemy do porownania ze srednia wczytanych liczb " << endl;
    cin >> d;
    cout << endl;
    cout << "Wczytaj 5 liczb calkowitych do tablicy " << endl;

    for(int i = 0; i <=4; i++)
    {
        cin >> tab[i];
        srednia += tab[i];

    }
    srednia = srednia / 5;
    cout << "srednia " << srednia <<  endl;
    
    system("pause");
    return 0;
}
0

Masz policzyć ile liczb różniło się od średniej o nie więcej niż G. G jest stałą rzeczywistą.

0

Wymyśliłem cos takiego, ale nie działa to dobrze. Możesz coś więcej podpowiedzieć

cout << "No i czas na czwarta czesc. Zaczynamy" << endl;
    cout << "Podaj stala ktorej uzyjemy do porownania ze srednia wczytanych liczb " << endl;
    cin >> d;
    cout << endl;
    cout << "Wczytaj 5 liczb calkowitych do tablicy " << endl;

    for(int i = 0; i <=4; i++)
    {
        cin >> tab[i];
        srednia += tab[i];

    }
    srednia = srednia / 5;
    cout << "srednia " << srednia <<  endl;


    for(int i = 0; i <=4; i++)
    {
        if(tab[i] != srednia )
            if(tab[i] - srednia < d)
            {
                z_pomocnicza++;
            }
    }
    cout << z_pomocnicza << endl;


    system("pause");
    return 0;
0
  1. Czemu zmienną podaną przez użytkownika N zamieniłeś w stałą 5?
  2. Co z wartościami mniejszymi niż średnia?
0

Spróbuj przeanalizować i zrozumieć następujące rozwiązanie.

    vector<double> collection { 3.45, 9.1, 12.4, -20.4, 12.7, 12.9, 17.8, 13.7 };
    double G {5.5};
    double average = accumulate( collection.cbegin() , collection.cend(), 0.0 )/collection.size();
    cout << count_if( collection.cbegin() , collection.cend() , [average,G](int i){ return abs(i-average)<G; } ) << endl;
0
TomaszLiMoon napisał(a):

Spróbuj przeanalizować i zrozumieć następujące rozwiązanie.

    vector<double> collection { 3.45, 9.1, 12.4, -20.4, 12.7, 12.9, 17.8, 13.7 };
    double G {5.5};
    double average = accumulate( collection.cbegin() , collection.cend(), 0.0 )/collection.size();
    cout << count_if( collection.cbegin() , collection.cend() , [average,G](int i){ return abs(i-average)<G; } ) << endl;

To trochę póki co poza moim zasięgiem. Dopiero zaczynam się uczyć. Rozwiązanie przyszło mi do głowy przez przypadek i działa. dzięki za pomoc.

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