Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Lösungsversuch
Inhaltsverzeichnis
Lösungsversuch
Aufgabe 1 - Wissensfragen
(unsicher)
a) 2 und 3 (bei Attributen immer nach statischem Typ)
b) 1 und 3
c) 1 und 4
Aufgabe 2 - Rekursion
import java.util.ArrayList; import java.util.List; class Ware { final String bezeichnung; final long preis; Ware(String b, long p) { this.bezeichnung = b; this.preis = p; } } public class Christkindlesmarkt { List<List<Ware>> alle(List<Ware> waren, long geld) { List<List<Ware>> llw = new ArrayList<>(); for (Ware w : waren) { if (w.preis == geld) { List<Ware> oneProduct = new ArrayList<>(); oneProduct.add(w); llw.add(oneProduct); } else if(w.preis> geld){ //nichts machen, zu wenig geld } else{ List<List<Ware>> listRek = alle(waren, geld - w.preis); //w noch hinzufuegen for (List<Ware> l : listRek) { l.add(w); } llw.addAll(listRek); } } return llw; } }
Aufgabe 3 - Bäume
public class Trie { // bis zu 26 Kinder; null, wenn kein Kind mit zugehoerigem Buchstaben: Trie[] kind = new Trie[’Z’ - ’A’ + 1]; String wort; // null, wenn keine Zeichenkette zu speichern ist void einfuegen(String s) { Trie akt = this; for (char c : s.toCharArray()) { if (c < ’A’ || c > ’Z’) { throw new IllegalArgumentException(); } int zeiger = c - 'A'; if(akt.kind[zeiger] == null){ akt.kind[zeiger] = new Trie(); } akt = kind[zeiger] } akt.wert = s; } void ausgeben() { // lexikographisch aufsteigend sortiert! if(this.wort != null){ System.out.println(this.wort); } for(Trie t : this.kind){ if(t != null){ t.ausgeben(); } } }
Aufgabe 4 - ADT
isX(PlayX(t, g), f) :≡ f = g ∧ !isO(t,f) V isX(t,f) isX(PlayO(t, g), f) :≡ isX(t,f) tie(t) :≡ all(t) ∧ !winsX(t) ∧ !winsY(t)