Auf der Thales (und auf den meisten anderen unserer SUNs) findet
sich im Verzeichnis
/usr/local/bin/ ein Programm calc.
Dieses Programm wäre im Prinzip in der Lage, arithmetische Ausdrücke
wie etwa
korrekt auszuwerten. Allerdings greift
es auf eine Shared-Library libcalc.so zu, die leider verloren
gegangen ist. Die Headerdatei, die zu der Shared-Library gehört, ist
aber noch vorhanden und sieht wie folgt aus:
#ifndef CALC_H #define CALC_H int domul (int, int); int dodiv (int, int); int doadd (int, int); int dosub (int, int); #endif
Eure Aufgabe ist es, eine passende Shared-Library zu implementieren,
die Multiplikation, Division, Addition und Subtraktion zweier Zahlen
Modulo 2005 durchführt. Bei der Division gibt es Fälle, in denen
dies nicht möglich ist, diese Fälle sollen erkannt werden und das
Programm soll sofort (z.B. mit Hilfe von assert()) beendet werden.
Die Funktionen domul, dodiv, doadd und dosub sollen
beliebige Integerzahlen als Parameter verarbeiten können, der Rückgabewert
soll aber immer zwischen und (einschließlich) liegen.
Für alle, die nicht auf unseren SUNs arbeiten, steht
calc.c, der Quellcode von
/usr/local/bin/calc,
auf der Homepage der Vorlesung zum Download bereit.
Nachdem Eure Shared-Library (unter dem Namen libcalc.so) erstellt wurde,
kann calc.c im selben Verzeichnis wie folgt erzeugt werden:
gcc -Wall -o calc calc.c -L. -lcalc