Informatik A

Werbung
5. Aufgabenblatt vom Montag, den 19. November 2012 zur Vorlesung
Informatik A
(Frank Hoffmann)
Einzelabgabe bis Freitag, den 30. November 2012 , 1200
1. Einfaches Haskell (4 Punkte)
Versuchen Sie, kurze elegante Lösungen zu finden.
(a) Schreiben Sie Funktionen
maxFour :: Int -> Int -> Int -> Int -> Int
die das Maximum der 4 Argumente zurückgibt, analog minFour für das Minimum.
(b) Schreiben Sie eine Funktion
between :: Int -> Int -> Int -> Bool
die entscheidet, ob das dritte Argument zwischen den beiden ersten Argumenten
liegt.
(c) Schreiben Sie eine Funktion
howManyEqual :: Int -> Int -> Int -> Int -> Int
die die maximale Anzahl paarweiser gleicher Argumente zurückgibt.
2. Schnelles Potenzieren (2 Punkte)
Schreiben Sie eine rekursive Funktion
powerOfTwo :: Int -> Integer
die rekrusiv die Potenz 2n ausrechnet. Aber statt immer wieder mit 2 zu multiplizieren
möchte man quadrieren. Sie sollten nach n gerade/ungerade unterscheiden.
3. Binärsuche (4 Punkte)
Schreiben Sie eine rekursive Funktion
binSearch :: Int -> [Int] -> Bool
die für einen ganzzahligen Anfragewert und eine Liste von ganzen Zahlen feststellt, ob
der Wert in der Liste vorhanden ist. Sie können voraussetzen, dass die Liste sortiert ist.
Dabei soll das Prinzip der Binärsuche (s. Übung 4) umgesetzt werden. Sie können aber
nicht voraussetzen, dass die Länge der Liste eine Zweierpotenz ist.
4. Klammertest (4 Punkte)
Schreiben Sie eine Funktion klammerTest :: String -> Bool, die testet, ob die in
einem Eingabestring vorkommenden öffnenden und schließenden runden Klammern 0 (0
bzw. 0 )0 einen korrekten Klammerausdruck bilden. Korrekte Klammerausdrücke sind
dadurch gekennzeichnet, dass in jedem Präfix (Anfangsstück) des Strings mindestens
so viele öffnende wie schließende Klammern auftreten und insgesamt es gleich viele
öffnende und schließende Klammern gibt. Definieren Sie ggf. geeignete Hilfsfunktionen.
Hinweis: Achten Sie bei Programmieraufgaben immer auf eine ausreichende und
klare Kommentierung, sonst Punktabzug! Bei diesem Zettel gilt Einzelabgabe! Schicken
Sie per email das lauffähige Haskell-Skript mit Bezeichner NameUeb5.hs an Ihren
Tutor, geben Sie es außerdem in Papierform ab.
Herunterladen