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); }
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); }
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); } }