Пример #1
0
        public override int GetHashCode()
        {
            //chci rad objemu (1, 10, 100, ....)
            int desetNaM = 10;
            int maxObjem = Ovladac.maxobjem();

            while ((desetNaM * 10) > maxObjem)
            {
                desetNaM *= 10;
                //m++;
            }
            return(this.a + this.b * desetNaM + this.c * desetNaM * desetNaM);
        }
Пример #2
0
        public override int GetHashCode()
        {
            //chci rad objemu (1, 10, 100, ....)
            int m = 1; int desetNaM = 10;
            int maxObjem = Ovladac.maxobjem();

            while ((desetNaM * 10) > maxObjem)
            {
                desetNaM *= 10;
                m++;
            }
            m++;
            return(kroky + stav.getA() * m + stav.getB() * m * m + stav.getC() * m * m * m);
        }
Пример #3
0
        static void prelej(Stav stav, Nadoba odkud, Nadoba kam, int krok)
        {
            if (stav.getObsah(odkud) != 0)
            {
                //je co prelevat
                Stav novy;
                int  volno = getObjem(kam) - stav.getObsah(kam);                    //kolik mam v cilove nadobe k dispozici objemu
                int  new_a = stav.getA(), new_b = stav.getB(), new_c = stav.getC(); //konecny stav, na zacatku ekvivalentni vychozimu stavu

                int noveOdkud, noveKam;
                //v nadobe odkud leju je vice vody nez je volny objem cilove nadoby
                if (stav.getObsah(odkud) >= volno)
                {
                    noveOdkud = stav.getObsah(odkud) - volno;
                    noveKam   = getObjem(kam);
                }
                //obsah nadoby odkud liji se vejde do cilove nadoby
                else
                {
                    noveOdkud = 0;
                    noveKam   = stav.getObsah(kam) + stav.getObsah(odkud);
                    if (noveKam > getObjem(kam))
                    {
                        throw new Exception("ERROR: Pretekla nadoba " + kam + " (objem: " + getObjem(kam) + " novy obsah: " + noveKam);
                    }
                }

                //nastavim parametry ciloveho stavu
                switch (odkud)
                {
                case Nadoba.A:
                    new_a = noveOdkud;
                    break;

                case Nadoba.B:
                    new_b = noveOdkud;
                    break;

                case Nadoba.C:
                    new_c = noveOdkud;
                    break;
                }

                switch (kam)
                {
                case Nadoba.A:
                    new_a = noveKam;
                    break;

                case Nadoba.B:
                    new_b = noveKam;
                    break;

                case Nadoba.C:
                    new_c = noveKam;
                    break;
                }

                if ((new_a + new_b + new_c) != Ovladac.getSum())
                {
                    throw new Exception("FATAL ERROR: Ztratila se voda! A:" + new_a + " " + " B:" + new_b + " C:" + new_c + " Odkud: " + odkud + " Kam: " + kam + " Obsah odkud: " + stav.getObsah(odkud) + " Volno: " + volno);
                }
                //vytvorim cilovy stav
                novy = new Stav(new_a, new_b, new_c);
                //oznamim, ze jsem se dostal do daneho stavu
                sk.umim(novy, krok);
            }
        }