19500 V Algorithmen und Programmieren I
Wintersemester 2001/2002

Rojas
Gloye


Übung 11

17. Januar 2002 (Abgabe 28. Januar 2002)

Aufgabe 1 (4 Punkte)

  1. 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.
  2. 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.

  1. Durch wiederholte Subtraktion.
  2. 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)