RateFunktion des SudokuSolver
-
Ich schenke Dir mal ein
switch(wert) { case 1: break; . . . case n: break; default: foo(); }
-
noergel schrieb:
Ich schenke Dir mal ein
switch(wert) { case 1: break; . . . case n: break; default: foo(); }
Ich hätte eher an
DateinamenFuerLadevorgang = 0;
gedacht.
-
Mir erschliest sich noch nicht, wie eine switchverzweigung da abhilfe schaffen soll...
@SeppJ: Ich komm nicht drauf wie es einfachgehen soll && hofe, dass 71ff richtig ist
-
Wenn
(*pDateinamenZaehler) == 2
, wie viel ist dann(*pDateinamenZaehler) - 2
?P.S.: Vermutlich ist der Code einfach falsch. Schwer zu sagen, denn der Code könnte so auch beim Italiener auf der Speisekarte stehen.
Außerdem hast du noch immer keine Frage gestellt.
-
Der Pointer Zeigt auf einen Integer, der bei 0 anfängt zu zählen.
Mein "Problem" ist , dass mein SudokuSolver bei dem schwersten Sudoku der Welt immer die erst Möglichkeit(9) einsetzt und dann alles löst, feststellt, dass es nicht mehr lösbnar ist die alte Datei lädt und der cnt wieder auf 0 gesetzt wird, womit wieder 9 statt 4 eingestezt wird ..
-
hgj
-
toter Beitrag....
-
Jetzt hast du selber den Thread getötet. Wenn man Tipps bekommt, dann setzt man diese um oder denkt darüber nach. Wenn man Fragen dazu hat, dann stellt man sie.
Aber man postet nicht 1500 Zeilen Code, bloß weil man keine Lust hat, die eigenen Probleme zu lösen
. Nun wird jeder Leser sofort verschwinden, wenn der diese Codewand sieht. So auch ich.
-
Ich habe diesen Code nur gepostet, damit m,an versteht, dass das scho0n durchdacht ist, dass der der wert 0 wird,
wie war das mit der switcxh verzeweigung gemeint?
-
Beeindruckende Fleißarbeit!
Aber streng doch Deine graue Masse an! Das entlastet die Finger ungemein.
Wenn Du 10 mal den gleichen Code mit leichten Änderungen schreibst, ist was faul. Entweder brauchst Du eine Funktion/Makro, oder Du schaust ob die Logik Dir hilft:
Das switch war die erste Reaktion auf diese if-else-if Orgie aus Deinem Code: (ich habe mal Pseudofunktionen drausgemacht)
void f(int* pDateinamenZaehler, int DateinamenFuerLadevorgang){ if((*pDateinamenZaehler) == 0) { DateinamenFuerLadevorgang = ((*pDateinamenZaehler) ); } else if((*pDateinamenZaehler) == 1) { DateinamenFuerLadevorgang = ((*pDateinamenZaehler) - 1); } else if((*pDateinamenZaehler) == 2) { DateinamenFuerLadevorgang = ((*pDateinamenZaehler) - 2); } else if((*pDateinamenZaehler) == 4) { DateinamenFuerLadevorgang = ((*pDateinamenZaehler) - 3); } else if((*pDateinamenZaehler) == 5) { DateinamenFuerLadevorgang = ((*pDateinamenZaehler) - 4); } /* usw usf */ else { (*pDateinamenZaehler)++; } } void g(int* pDateinamenZaehler, int DateinamenFuerLadevorgang){ switch(pDateinamenZaehler){ case 0: case 1: case 2: DateinamenFuerLadevorgang = 0; break; case 4: case 5: case 6: case 7: case 8: case 9: /* usw. usf. */ DateinamenFuerLadevorgang = 1; break; default: ++*pDateinamenZaehler; } }
Schon deutlich kürzer, aber eigentlich kein Anwendungsfall für ein switch-case.
Das geht noch klarer:
void h(int* pDateinamenZaehler, int DateinamenFuerLadevorgang){ if(-1 < *pDateinamenZaehler && *pDateinamenZaehler < 3) DateinamenFuerLadevorgang = 0; else if(3 < *pDateinamenZaehler && *pDateinamenZaehler < 10) DateinamenFuerLadevorgang = 1; else ++*pDateinamenZaehler; }
SeppJ und ich fragen uns allerdings: ist das was Du implementiert hast auch das, was Du implementieren wolltest?
Wo mir noch so'n Ding aufgefallen ist bei
PositionKasten()
. Wieder enorme Fleißarbeit, aber letztlich hätte es auch ein:void i(){ *pKastenBeginnendeZeile = 3 * (*pZeile/3); *pKastenBeginnendeSpalte = 3 * (*pSpalte/3); //... }
getan.
Programmieren heißt auch sich's Hirn zermatern!