Musterloesung Klausur WS 2014 Aufgabe 2 Sort durch Zaehlen

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 :wink:


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??? :wink:


Dann nimm halt WP statt JUnit :stuck_out_tongue:


WP, bitte nicht. :frowning: gibts ne Chance dass das nicht in die Klausur kommt???


War in meinem Semester nicht dran :slight_smile:
Die Hoffnung stirbt immer zuletzt … aber sie stirbt :stuck_out_tongue: