Seite 1 von 1

2. Programmieraufgabe Klausur SS15

Verfasst: 3. Apr 2016 18:00
von ek65baze
Hallo, ich wollte fragen ob sich noch jemand konkret an die Aufgabenstellung der 2. Programmieraufgabe der letzten Klausur erinnern kann.
Ich weiß noch das es eine Liste mit Knoten gab und man prüfen sollte ob dies einen korrekten B-Baum darstellt. Man sollte noch eine HashMap benutzen um zu prüfen welche Knoten man schon durchlaufen hat, kann mich aber an weitere Details nicht mehr erinnern.

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 3. Apr 2016 20:02
von Hallo
Ich kann mich leider nicht erinnern, aber weisst du was die 1. Programmieraufgabe als Aufgabenstellung hatte?

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 3. Apr 2016 20:26
von ek65baze
Die erste war soweit ich weiß, du hast 2 Listen mit einzelnen Buchstaben als Strings und einen comparator. Die Methode soll beide Wörter vergleichen und ausgeben welches Wort lexikographisch kleiner und welches größer oder ob beide gleich sind. Weiß nicht mehr ob das iterativ oder rekursiv implementiert werden sollte.

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 3. Apr 2016 20:31
von PY7
Ich kann mich leider nicht erinnern, aber weisst du was die 1. Programmieraufgabe als Aufgabenstellung hatte?
in der erster Aufgabe mussten wir zwei Strings vergleichen, wobei jeder String in einer LinkedList gespeichert wurde. (iterativ)
Hallo, ich wollte fragen ob sich noch jemand konkret an die Aufgabenstellung der 2. Programmieraufgabe der letzten Klausur erinnern kann.
Ich weiß noch das es eine Liste mit Knoten gab und man prüfen sollte ob dies einen korrekten B-Baum darstellt. Man sollte noch eine HashMap benutzen um zu prüfen welche Knoten man schon durchlaufen hat, kann mich aber an weitere Details nicht mehr erinnern.
in der zweiter Aufgabe müssten wir ein "MultiwaySearchTree" auf Korrektheit überprüfen.(rekursiv)
wir hatten die Klasse "MultiwaySearchTreeNode", die eine LinkedList von "children" als lokale Variable hatte.
ich glaube die gegebene Struktur war eine richtige "MultiwaySearchTree" wenn keine der "children" gleich Wurzel war, und wenn der jetzige Knoten in einem vorherigen Durchlauf nicht besucht wurde (hier hat man die HashSet benutzt).

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 3. Apr 2016 21:10
von ek65baze
Ahh dankeschön. Könnte eine Lösung zur 2. ungefähr so aussehen?

Code: Alles auswählen

public boolean multiSearchTree(){
	return multiSearchTree(root, new HashSet<Node>());
}

private boolean multiSearchTree(Node n, set){
	for(Node child : n.childrens){
		if(set.contains(child) || child == root)
			return false;
			
		set.add(child);
		if(!multiSearchTree(child, set))
			return false;
	}
	return true;
}

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 09:38
von string
Hi,
wozu brauchte man denn bei der ersten Aufgabe bei Strings einen Comparator?

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 12:31
von ek65baze
Der Comperator entscheided für dich was lexikographisch kleiner, größer oder gleich ist. Das sollte das ganze vereinfachen, woher sollstest du denn z.b. wissen was größer ist, # oder % oder sind beide vlt. gleich? Der Comparator definiert das halt für dich.

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 12:42
von string
ek65baze hat geschrieben:Der Comperator entscheided für dich was lexikographisch kleiner, größer oder gleich ist. Das sollte das ganze vereinfachen, woher sollstest du denn z.b. wissen was größer ist, # oder % oder sind beide vlt. gleich? Der Comparator definiert das halt für dich.
Aber hat String nicht schon ein compareTo und somit auch einen Vergleich für z.B. # , % ?

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 13:45
von ek65baze
Ich glaube du solltest dir mal den Begriff lexikographisch klar machen, es geht nicht um das Vergleichen der Buchstaben sondern um den Stellenwert den sie besitzen.

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 14:08
von string
Hm, ok, für mich gibt String::compareTo aber doch genau den stellenwert zurück. # ist kleiner als /. Der einzige unterschied ist ja das mir bei compareTo sogar noch die Stellenwertedistanz angegeben wird (z.B -12,0,12) und bei einem Comparator nur -1,0,1. Aber das ist ja auch <>0. Oder ist es wichtig, dass man es mit -1,0,1 macht?

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 14:57
von ek65baze
Und was ist wenn der Kunde aber möchte das # größer als % ist? Das weißt du ja nicht, deswegen regelt der Comparator das für dich.

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 15:47
von Prof. Karsten Weihe
ek65baze hat geschrieben:Und was ist wenn der Kunde aber möchte das # größer als % ist? Das weißt du ja nicht, deswegen regelt der Comparator das für dich.
Genau!

Im Video zu Generics und Collections ist noch ein (hoffentlich) motivierendes Beispiel, wozu Comparator gut ist:

Code: Alles auswählen

public class Studi {
    public String nachname;
    public String vorname;
    public int matrikelnummer;
}
Man kann nun zum Beispiel zwei Klassen von java.util.Comparator<Studi> ableiten, so dass Methode compare im einen Fall die Matrikelnummern vergleicht, im anderen Fall die Nachnamen und - falls die identisch sind - die Vornamen.

Eine Implementation eines Sortieralgorithmus mit einer Collection und einen Comparator (mit demselben generischen Parameter) als Argumente kann dann einmal verwendet werden, um Studierende nach Matrikelnummern zu sortieren, ein anderes Mal zum Sortieren nach Namen. Ist doch nett, oder? 8)

KW

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 17:17
von string
Hallo,
ja, danke. Das mit dem Kunden machte es klar.
Das Bespiel mit den Studi Comparatoren war mir gleich klar. Allerdings hatte ich mich da schon beim Lesen des Pdf's gefragt, ob bei dem Vergleich der Namen nicht immer compareTo verwendet werden müßte? Im Video -> s1.vorname.compare(s2.vorname) etc.
Bei dem erklären der Comparatoren die um Number extended werden, wird auch Character als T extends Number verwendet, obwohl Character nicht von Number erbt? Wie wird das gemacht?

Re: 2. Programmieraufgabe Klausur SS15

Verfasst: 4. Apr 2016 18:14
von Prof. Karsten Weihe
Da scheint wohl etwas leicht fehlerhaft im Video zu sein, ist bisher noch keinem aufgefallen... :oops:

KW