public ITablicaOsobPienieznych StworzTablicaKoncowa(ITablicaOsobPienieznych tablicaOsob)
        {
            long sumaNaleznosci = 0;

            foreach (IOsobaSwiadczeniePieniezne osoba in tablicaOsob)
            {
                sumaNaleznosci += osoba.Wplata.Swiadczenie;
            }

            byte naIleCzesci = tablicaOsob.WezIloscOsob;

            IOsobaPieniezna[] szeragOsob = new IOsobaPieniezna[naIleCzesci];

            int swiadczenieKawalka = (int)(sumaNaleznosci / naIleCzesci);

            if (sumaNaleznosci < 0)
            {
                swiadczenieKawalka--;
            }

            byte iloscCoDostaneiWiecej = (byte)(sumaNaleznosci - (long)(swiadczenieKawalka * naIleCzesci));

            bool czyObniznoneFlaga = false;

            foreach (IOsobaPieniezna osoba in tablicaOsob.Reverse())
            {
                if (!czyObniznoneFlaga && iloscCoDostaneiWiecej++ >= naIleCzesci)
                {
                    swiadczenieKawalka++;

                    czyObniznoneFlaga = true;
                }

                szeragOsob[osoba.ID] = osoba.ZmienWplate(fabrykaNaleznosci.StworzNaleznosc(swiadczenieKawalka));
            }

            return(fabrykaTablicaOsobPienieznych.StworzTablicaOsob(szeragOsob));
        }
 public static INaleznoscPieniezna Stworz(int wplataWGroszach)
 {
     return(fabrykaNaleznoscPieniezna.StworzNaleznosc(wplataWGroszach));
 }