sortieralgorithmus
-
hallo leute
ich möchte einen algorithmus schreiben, der in einem stringrid mit neun zeilen und neun spalten, in dem die zahlen von eins bis neun drinstehen sortiert.
und zwar dass keine gleichen zahlen untereinanderstehen.
soweit so gut, aber sobald in der obersten zeile eine neun steht, sortiert er die darunterliegenden zahlen nicht mehr und hab keinen plan wieso???
grundlegend funktioniert er so:
in der ersten zeile wird eine eins gesucht. hat er die gefunden überprüft er ob in der darunterliegenden zeile in der gleichen spalte eine eins liegt.
ist eine eins vorhanden, wird diese um ein feld nach rechts verschoben.
dann die nächste zeile nach einer eins gesucht.... uswhier der code mit kommentaren
int ZeilenSpeicher; // int SpaltenSpeicher; // for(int x=0;x<500;x++) // 500 facher durchlauf des algorithmus { for(int Laufzahl=1;Laufzahl<=9;Laufzahl++) //zahl die überprüft wird { for(int zeile=1;zeile<=9;zeile++) // zählschleife für zeile { for (int spalte=1;spalte<=9;spalte++) //zählschleife für spalte { if(sg->Cells [spalte-1][zeile-1] == Laufzahl) // Eins vorhanden Y/N { ZeilenSpeicher = zeile; // speicherung der momentanen Zeile SpaltenSpeicher = spalte; // speucherung der momentanen Spalte zeile++; // nächste spalte wird aufgerufen for(zeile;zeile<=9;zeile++) // zählschleife zum prüfen ob weitere zahl in der spalt vorhanden { if(sg->Cells [spalte-1][zeile-1] == Laufzahl) { if(spalte<9) //tauschen wenn spalte < 9 { int Speicher; Speicher = StrToInt(sg->Cells [spalte-1][zeile-1]); sg->Cells [spalte-1][zeile-1] = sg->Cells [spalte][zeile-1]; sg->Cells [spalte][zeile-1] = Speicher ; } else // sonst an anfang des stringgrids stellen { int Speicher; Speicher = StrToInt(sg->Cells [spalte-1][zeile-1]); sg->Cells [spalte-1][zeile-1] = sg->Cells [1][zeile-1]; sg->Cells [1][zeile-1] = Speicher ; } } } zeile = ZeilenSpeicher; // rückgabe der ursprünglichen zeile spalte = SpaltenSpeicher; // rückgabe der ursprünglichen spalte } } } } }

wer lust hat ein bisschen zu tüfteln und mir einige tipps geben kann...
ich bin sehr dankbar
-
keiner eine idee???
hab schon stunden lang daran probiert... aber finde den fehler nicht
-
Da wird keiner Lust haben dein Code zu verstehen und deinen Fehler zu finden.
Aber ich kann dir mal ein paar Allgemeinte Tipps geben:
- Probier deinen Code besser zu strukturieren und wenn nötig klare Funktionen zuweisen und, wie es der Name bereits sagt daraus Funktionen zu machen.
- Geringere Verschachtlungstiefe hilft ebenfalls für die Lesbarkeit (und somit das finden von (Denk)Fehlern.
- Wenn das alles nichts hilft, dann muss wohl der Debugger herhalten, wo du dann Schritt für Schritt durchgehen musst und die Werte, die du erwartest mit denen, die es herausgibt vergleichen.