19500 V Algorithmen und Programmieren I Wintersemester 2001/2002
|
|
Übung 11
17. Januar 2002 (Abgabe 28. Januar 2002)
Aufgabe 1 (4 Punkte)
Definieren Sie in Haskell eine Funktion unpack::Integer->[Integer], die
zu einer gegebenen Basis base::Integer eine Zahl in eine Liste von
Zahlen (Ziffern bzgl. der gegebenen Basis) umwandelt. Wenn die Zahl negativ
ist, darf nur die höchstwertige Ziffer negativ sein. Zum Beispiel soll zur
Basis 10 die Zahl -24 in die Ziffernfolge [-3,6] umgewandelt werden, denn -24 ist -3*10^1+6*10^0.
Definieren Sie in Haskell eine Funktion vsign::[Integer]->Integer, die
0 zurückgibt, wenn die gegebene Zahl 0 ist, die 1 zurückgibt, wenn die gegebene
Zahl positiv ist und die -1 zurückgibt, wenn die gegebene Zahl negativ ist.
Aufgabe 2 (4 Punkte)
Definieren Sie in Haskell die Funktion bigmul::[Integer]->[Integer]->[Integer],
die die Multiplikation zweier großer Zahlen durchführt.
Aufgabe 3 (2/6 Punkte)
Definieren Sie in Haskell die Funktionen bigdiv::[Integer]->[Integer]->[Integer],
die eine ganzzahlige Division auf zwei Arten durchführt.
Durch wiederholte Subtraktion.
Durch wiederholte Subtraktion mit Shiften (wie bei der schriftlichen Division).
Aufgabe 4 (2 Punkte)
Definieren Sie in Haskell die Funktionen bigmod::[Integer]->[Integer]->[Integer],
die den Rest einer ganzzahlige Division zurückgibt.
letzte Änderung am 17. Januar 2002 (Alexander Gloye)