Z ciągu n wprowadzonych liczb, liczba będąca najbliżej wyliczonej średniej arytmetycznej

0

Witam,

Mam pytanie, czy jest jakiś sposób, by w ciągu n liczb, z których liczymy średnią, znaleźć liczbę, która najlepiej odpowiada wyliczonej średniej? średniej bez używania tablicy?

Czyli, wprowadzając liczby 4,5,6, z których średnia będzie 5.00, powinno wskazać liczbę 5.

2

Jeśli to ma być wprowadzona liczba najbliższa średniej, to bez jakiegoś kontenera (np tablicy) się nie obejdzie. Bo średnią da się policzyć dopiero po wprowadzeniu wszystkich liczb. Dopiero potem można sprawdzać ile poszczególne liczby dzieli od średniej (z pominięciem znaku), i wybrać tą z najmniejszą różnicą.

3
sig napisał(a)

Bo średnią da się policzyć dopiero po wprowadzeniu wszystkich liczb.

Tak, tyle że samą średnią można obliczyć bez przechowywania wszystkich liczb - wystarczy zapamiętać bieżącą sumę podanych liczb i ich ilość:

var
  intSum: Integer = 0;
  intCount: Integer = 0;
  intNumber: Integer;
begin
  repeat
    ReadLn(intNumber);

    if intNumber <> -1 then
    begin
      Inc(intSum, intNumber);
      Inc(intCount);
    end;
  until intNumber = -1;

  Write('Arithmetic Mean: ', intSum div intCount);
  ReadLn;
end.

Natomiast aby wskazać liczbę najbliżej średniej, trzeba mieć z czego wybierać; A jeśli nie przechowasz sobie w pamięci podanych liczb, to nie będziesz miał z czego wybierać - logiczne.

0

Ok, dzięki za odpowiedzi, myślałem, że można jakieś ciekawe sztuczki zastosować, oprócz stosowania tablicy. :)

Pozdrawiam, do zamknięcia

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.