Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Musterloesung Klausur WS 2014 Aufgabe 2 Sort durch Zaehlen
HAllo ich glaube im Code is ein Fehler: eventuell korrigieren falsch ich falsch lieg, oder mir vllt erklaeren, warum es so gemacht wurde:
char c = 0; //current char (Teilaufgabe c)
int index = 0; //write index
do {
for(int i = 0; i < in[c]; i++) { <- Glaube hier kommt for(init i = 0; i < count[c];i++
// wenn count[c] auf z.B. 3 steht so soll ja 3 mal in in[] geschrieben werden, in[] enthaelt ja nicht die anzahl der buchstaben sondern der buchstabe selbst gespeichert
in[index++] += 1; <--- in[index++] = c; in[] enthaelt ja den wert des buchstabens und nicht dessen (inhalt + 1) so wird ja nur das alte array an der stelle index um 1 erhoeht.
}
c++;
} while (c < count.length && index < in.length);
vllt irre ich mich da auch grad… Kann ja mal jemand gegechecken
Schreib doch einen JUnit-Test dafuer
Ja, die Musterlösung ist falsch. Aktuell würde bei der Ausführung auch eine ArrayIndexOutOfBoundsException kommen, da die for-Schleife ja falsch ist. Bei der while-Bedingung ist auch die erste Bedingung vollkommen unnötig, da diese nur überprüft, ob das char c kleiner als 256 ist, was durch die Angabe ja immer gegeben ist. Richtig wäre daher:
// a)
int[] count = new int[256];
// b)
for(int i = 0; i < in.length; i++) {
count[in[i]] += 1;
}
// c)
char c = 0; // current char
int index = 0; // write index
do {
for(int i = 0; i < count[c]; i++) {
in[index++] = c;
}
c++;
} while(index < in.length);
EDIT: Musterlösung angepasst
neeeee, JUunit gibts ja noch nicht analog… Es sei den wir kriegen in der Klausur auch ein JUnit zur verfuegung, und vllt nochn eclipse???
Dann nimm halt WP statt JUnit
WP, bitte nicht. gibts ne Chance dass das nicht in die Klausur kommt???
War in meinem Semester nicht dran
Die Hoffnung stirbt immer zuletzt … aber sie stirbt