Esempio n. 1
0
        private ITabelaNaleznosciPienieznej Znajdz(ITablicaOsobPienieznych tablicaOsob, long staraRozniceDoPoczatkowej)
        {
            ITabelaNaleznosciPienieznej najlepszaTabelaNaleznosci = fabryka.StworzTabelaNaleznosciPienieznejNull();

            foreach (IOsobaSwiadczeniePieniezne osobaKorzen in tablicaOsob)
            {
                foreach (IOsobaSwiadczeniePieniezne osobaPotomek in tablicaOsob)
                {
                    INaleznoscPieniezna roznicaNaleznosci = najwiekszaMozliwaNaleznoscDoWymianyUstalacz.UstalNaleznoscDoWymiany(tablicaOsob, osobaKorzen, osobaPotomek);

                    if (roznicaNaleznosci.Swiadczenie == 0)
                    {
                        continue;
                    }

                    ITablicaOsobPienieznych nowaTablicaOsob = tablicaOsob.PrzekazNaleznosciPomiedzyOsobami(osobaKorzen, osobaPotomek, roznicaNaleznosci);

                    long rozniceDoPoczatkowej = rozniceDoStanuKwitaSumator.SumujRoznice(nowaTablicaOsob);

                    if (rozniceDoPoczatkowej >= staraRozniceDoPoczatkowej)
                    {
                        continue;
                    }

                    ITabelaNaleznosciPienieznej NowaTabelaNaleznosci = ZnajdzTabeleNaleznosciDlaNoweTablicyOsob(nowaTablicaOsob, rozniceDoPoczatkowej);

                    NowaTabelaNaleznosci.DodajWymianeNalzenosciUaktualniajacKryterium(roznicaNaleznosci,
                                                                                      fabryka.StworzPolozenieWTabeliNaleznosci(osobaPotomek.ID, osobaKorzen.ID));

                    najlepszaTabelaNaleznosci = najlepszaTabelaNaleznosci.ZwrocLepszeKryterium(NowaTabelaNaleznosci);
                }
            }

            return(najlepszaTabelaNaleznosci);
        }
Esempio n. 2
0
        internal static ITabelaNaleznosciPienieznej Stworz(int sumaNaleznosciDoTabeli, byte iloscOsob = 4,
                                                           KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci = default(KryteriumWyboruTabeliNaleznosciWylicznik))
        {
            ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_Pusty(iloscOsob, kryteriumWyboruTabeliNaleznosci);

            Random GeneratorLiczbPseudolosowych = new Random();

            for (byte indeks_X = 2; indeks_X < iloscOsob; indeks_X++)
            {
                for (byte indeks_Y = 0; indeks_Y < indeks_X; indeks_Y++)
                {
                    int komorka = GeneratorLiczbPseudolosowych.Next(sumaNaleznosciDoTabeli);

                    if (komorka > 0)
                    {
                        sumaNaleznosciDoTabeli -= komorka;

                        IPolozenieWTabeliNaleznosci polozenieWTabeli =
                            Stworz_PolozenieWTabeliNaleznosci.Stworz(indeks_X, indeks_Y);

                        tabelaNaleznosci.
                        DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(komorka), polozenieWTabeli);
                    }
                }
            }

            if (sumaNaleznosciDoTabeli > 0)
            {
                IPolozenieWTabeliNaleznosci polozenieWTabeli =
                    Stworz_PolozenieWTabeliNaleznosci.Stworz(1, 0);

                tabelaNaleznosci.
                DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(sumaNaleznosciDoTabeli), polozenieWTabeli);
            }

            return(tabelaNaleznosci);
        }
        public void Czy_UstawiaIZwraca_PrawidlowaWartosc(byte indeks_X, byte indeks_Y, int naleznoscWPolgroszach)
        {
            //Ustal
            ITabelaNaleznosciPienieznej tabelaNaleznosciPienieznej = Stworz_TabelaNaleznosciPienieznej.Stworz_Pusty();

            IPolozenieWTabeliNaleznosci polozenieWTabeli = Stworz_PolozenieWTabeliNaleznosci.Stworz(indeks_X, indeks_Y);

            INaleznoscPieniezna naleznoscOczekiwana = Stworz_NaleznoscPieniezna.Stworz(naleznoscWPolgroszach);

            //Dzialaj
            tabelaNaleznosciPienieznej.DodajWymianeNalzenosciUaktualniajacKryterium(naleznoscOczekiwana, polozenieWTabeli);

            INaleznoscPienieznaSwiadczenie naleznosc_Zwrocona = tabelaNaleznosciPienieznej[polozenieWTabeli];

            //Asercja
            Assert.Equal(naleznoscOczekiwana.Swiadczenie, naleznosc_Zwrocona.Swiadczenie);
        }
Esempio n. 4
0
        internal static ITabelaNaleznosciPienieznej Stworz(int[][] naleznosciDoTabeliNalznosci,
                                                           KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci = default(KryteriumWyboruTabeliNaleznosciWylicznik))
        {
            byte iloscOsob = (byte)naleznosciDoTabeliNalznosci.GetLength(0);

            ITabelaNaleznosciPienieznej tabelaNaleznosci = Stworz_Pusty((byte)(iloscOsob + 1), kryteriumWyboruTabeliNaleznosci);

            for (byte indeks_X = 0; indeks_X < iloscOsob; indeks_X++)
            {
                for (byte indeks_Y = 0; indeks_Y <= indeks_X; indeks_Y++)
                {
                    int komorka = naleznosciDoTabeliNalznosci[indeks_X][indeks_Y];

                    if (komorka != 0)
                    {
                        tabelaNaleznosci.
                        DodajWymianeNalzenosciUaktualniajacKryterium(Stworz_NaleznoscPieniezna.Stworz(komorka),
                                                                     Stworz_PolozenieWTabeliNaleznosci.Stworz((byte)(indeks_X + 1), indeks_Y));
                    }
                }
            }

            return(tabelaNaleznosci);
        }