Klausur SS2013

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.

Klausur SS2013
Gibt es einen Lösungsversuch zur Klausur SS2013? Falls ja wo finde ich den?


Eher nicht war erst letztes Semester. Lösungsvorschläge finden sich hier


Was natürlich nicht davon abhalten soll, hier seine eigenen Lösungsvorschläge zur Diskussion zu stellen, damit man mal einen für die FSI-Seite erstellen kann. :wink:


Dann mach ich mal den Anfang und stelle Aufgabe 1 und 2 zur Diskussion:

Aufgabe 1
a) ganz auf die Deklaration des Ausnahmetyps X verzichten (Erklärung?)
b) falsch
c) true
d) falsch
e) falsch
f) falsch, richtig: FIFO
g) O(n) Einfügen, nach Prüfen ob doppelt vorhanden: O(n). Um einen Wert zu löschen muss dieser erst gefunden werden: O(n). O(n) + O(n) = O(n);
h) wahr
i) class GenericContainer<E extends Comparable>
j) O(n * log2 n)
k) falsch
l) ?
m) ?

Aufgabe 2
a)
ist unverdaulich
42
2
0.815 kg
4711
4711
Apfelringe
Birnenmus

b)

public interface Essbar {
	String menge = "0.815 kg";
	Vodka[] digestiv = new Vodka[100]; //
	String verdauen(int portionen);
}

c)


public class MilchShake extends ObstGericht implements Trinkbar{
	String menge = "1 Becher";
	String bananen = "Hola Chica";
	private boolean laktosefrei = false;
	
	public String verdauen(long portionen){
		return Long.toString(portionen);
	}
	
	public static String schaelen(long aepfel){
		return "Apfelmus";
	}
	
	public String schaelen(String birnen){
		return "Birnenmus";
	}
}

Wer kann bei Aufgabe 3 weiterhelfen?

Aufgabe 3

a)
ops
diff: MathExpr → MathExpr
axs
diff(const(d)) = 0
diff(v) = 1
….

b)
ops
sub: MathExpr x MathExpr → MathExpr
mul: MathExpr x MathExpr → MathExpr
axs
diff(sub(g,h)) = sub(diff(g),diff(h))
diff(mul(g,h)) = add(mul(diff(g),h),mul(g,diff(h)))

c)
axs
diff(sin(f)) = mul(cos(f),diff(f))
diff(cos(f)) = …

1 „Gefällt mir“

Aufgabe 4

a)
i)
Buckets: 0 1 2 3 4 5
keys V2 V4 V3 V1
V5 V6

ii)
h’(VK) := 0

b)
i)
Buckets 0 1 2 3 4 5
keys V2 V4 V6 V5 V3 V1

ii)
Lastfaktor = Eingetragene Schlüssel / Buckets = 6/6 = 1 = 100%


Aufgabe 5+7


Aufgabe 6

a)
Q A B C D E F Queue
0 x x x x x x Q
1 3 x 5 x x B,C,D,E,F
3 x 4 2 x B,C,D,F
3 x 4 10 C,D,F
7 4 10 C,F
6 5 C
6

0 1 3 6 4 2 5

(Ich habe nicht ganz umrissen was mit Queue gemeint ist. Vielleicht kann das jemand korrigieren)

b)
Q → A → D → F (oder)
Q → B → D → F

c)
(Q,A) (A,E) (B,D) (D,F) (D,C) (A,D)
9 Meter Kabel

1 „Gefällt mir“

zu aufgabe 5

a)

kannst du mir bitte erklären warum ein this. vor dem rekursionsaufruf steht? … bzw. was geschieht wenn man das weglässt? kommt dann was anderes raus?


Eigentlich müsste das Programm ohne “this” auch funktionieren, probiere das einfach mal aus. Das Wort “this” gehört einfach zu meinem Programmierstil.


Das this ist aber auch nicht “nur” Programmierstil:

public class This {

    public int variable = 123;

    public void method(int variable) {
        System.out.println(variable);
        System.out.println(this.variable);
    }

    public static void main(String[] args) {
        new This().method(456);
    }
}

Aufgabe 3

Seien a, b vom Datentyp MathExpr und d vom Datentyp double.

a)

ops:
diff: MathExpr → MathExpr

axs:
diff(const(d)) = const(0)
diff(v) = 1
diff(add(a, b)) = add(diff(a), diff(b))

b)

ops:
sub: MathExpr x MathExpr → MathExpr
mul: MathExpr x MathExpr → MathExpr

axs:
diff(sub(a, b)) = sub(diff(a), diff(b))
diff(mul(a, b)) = add(mul(diff(a), b), mul(a, diff(b))

c)

axs:
diff(sin(a)) = mul(cos(a), diff(a))
diff(cos(a)) = sub(const(0), mul(sin(a), diff(a)))


Bei der Sache mit den Socken hätte ich ja eher erwartet, dass der Größenvergleicher Comparator implementiert und der Mustervergleicher
Comparator und nicht Comparator .

Was meint ihr ?


Schau dir mal den vorgegebenen Code bei Teilaufgabe c) an.

Da findet sich:

final Comparator<Socke> gv, mv;

public Doppelvergleicher(GroessenVergleicher gv, MusterVergleicher mv) {
//...

Ergo müssen die beiden Comparator implementieren.

Abgesehen davon ist im Auszug aus der Java-API spezifiziert, dass die [m]compare()[/m]-Methode als Parameter den gleichen generischen Typ akzeptiert, den das Interface akzeptiert. Da in Teilaufgabe a)

public int compare(Socke o1, Socke o2) {
/...

vorgegeben ist, muss es also Comparator sein.

1 „Gefällt mir“

adt
gilt auch bei der c-) für die cos(x) als Axiome

diff(cos(x)) = mul(sub(0,1),mul(sin(x),diff(x))

?


Nein, man kann aber statt des unteren Axioms auch diff(cos(x)) = mul(sub(const(0),const(1)),mul(sin(x),diff(x))) schreiben.


Hab mal ne Wiki-Seite für die Lösung erstellt:

https://fsi.informatik.uni-erlangen.de/dw/pruefungen/bachelor/aud/loesungss13


lolwut
In diesem Satzt sind ne menge worte die ich nicht kenne


Wenn hier jemand die Güte besäße zu erklären, was Chayyam bei der Rekrusionsaufgabe mit den Wasseranschlüssen
bei Teilaufgabe c) gemacht hat. Ich komm nicht drauf. Danke.

Hier gehts zum Material von Chayyam: https://www.dropbox.com/sh/evef53kcaw44v47/TZFqQH3o8J