Willkommen auf den Seiten zu der Vorlesung "Programmieren in C". Auf dieser Seite werden zukünftig immer die neuesten Übungsblätter usw. bereitstehen.
Schreiben Sie eine C-Funktion zur Berechnung der
Fakultät einer natürlichen Zahl, und benutzen Sie
diese Funktion in einem C-Programm, um
für n=1,...,20 jeweils n
und n! auszugeben (wie
fib1.c
).
Schreiben Sie ein interaktives C-Programm zur
Berechnung von Binomialkoeffizienten, d.h., lesen Sie
von der Standardeingabe zwei Zahlen n und
k und geben Sie den zugehörigen
Binomialkoeffizienten aus.
Schreiben Sie ein C-Programm zur Berechnung der
Primzahlen zwischen 1 und 1000. Hinweis: Eine
C-Funktion in Ihrem Programm könnte als
int
is_prime(int n)
deklariert sein und 1 liefern,
wenn n eine Primzahl ist, und 0 sonst.
Schreiben Sie ein interaktives C-Programm zur Berechnung der
reellen Lösung(en) einer allgemeinen quadratischen
Gleichung (ax2 + bx +
c = 0). Denken Sie daran, alle
möglichen Fälle für a,
b und c zu behandeln.
Hinweis: Die Methode des Siebes des Eratosthenes
verwendet keine Division, d.h., in Ihrem Programm
sollten die Operatoren Schreiben Sie ein C-Programm zur Berechnung der
Primzahlen zwischen a und b mittels der
Methode des Siebes des Eratosthenes. Verwenden Sie dazu
dynamischen Speicher (
malloc
/free
).
/
und %
nicht verwendet werden!
Informieren Sie sich (zum Beispiel unter Verwendung
der Unix-Manual-Pages, d.h., benutzen Sie in der Shell
den Befehl
man strlen
usw.) über die
Funktionalität der Standard-C-Funktionen strlen
,
strcat
, strcmp
,
strcpy
, strdup
und
strchr
. Schreiben Sie dann Ihre eigenen
Versionen dieser Funktionen (nennen Sie diese
my_strlen
usw.) und illustrieren Sie
die Wirkung aller dieser Funktionen in einem Programm.
Hinweis: Modifizieren Sie Ihr Programm aus der
5. Aufgabe folgendermaßen: Verwenden Sie, um
Speicherplatz zu sparen,
einzelne Bits anstelle von
int
-Zahlen, um zu
speichern, ob die untersuchten Zahlen prim sind oder
nicht. Gehen Sie davon aus, daß
Speicherplätze des Typs unsigned int
32 Bit groß sind. (Ein jeder solcher
Speicherplatz speichert also für 32 Zahlen
gleichzeitig, ob sie prim sind oder nicht.)
Benutzen Sie
die bitweisen logischen Operatoren (&
,
|
, ~
) sowie die
Bit-Shift-Operatoren (<<
,
>>
), um auf die einzelnen Bits
zuzugreifen.
(1 << 0)
bis
(1 << 31)
sind Zahlen, in
denen ein einzelnes Bit auf 1 gesetzt ist und alle anderen
Bits auf 0 gesetzt sind.
Ändern Sie das Programm
matrix2.c
aus der Vorlesung, so daß das
Produkt zweier reeller Matrizen berechnet wird.
Erweitern Sie Ihr Programm aus der 8. Aufgabe
folgendermaßen:
Hinweis: Um zu entscheiden, ob die
Zeichenkette Ein Dateiformat zur Speicherung reeller Matrizen
sei wie folgt definiert. Die Textdatei enthalte in der
angegebenen Reihenfolge Textzeilen des folgenden Inhalts:
Hierbei seien Operand1, Operand2
entweder reelle Zahlen oder Namen von Dateien, die
reelle Matrizen im angegebenen Format
speichern. Operator sei
entweder
./matrix Operand1 Operator Operand2
*
, +
oder -
. Das Programm soll die so
angegebene Rechenaufgabe lösen, falls dies
möglich ist, und das Ergebnis auf der
Standardausgabe ausgeben. Eingabefehler sollen
erkannt und behandelt werden.
s
eine Zahl oder einen
Dateinamen enthält, können Sie
sscanf(s, "%lf", &zahl)
verwenden. Der
Rückgabewert dieses Aufrufs gibt an, ob erfolgreich eine Zahl
eingelesen wurde.
Schreiben Sie unter Verwendung von
realloc()
und fgets()
eine Funktion
Diese soll das Einlesen einer vollständigen Zeile
aus dem Datenstrom f in den Speicher ab der
Speicherstelle, auf die der Zeiger
void get_line_with_alloc(FILE *f, char **buffer_p, int
*size_p);
*buffer_p
zeigt, bewirken. Es sei
Speicher mit der Größe *size_p
reserviert. Falls dieser Speicher nicht ausreicht, um
die komplette Zeile zu speichern, wird er
mittels realloc()
vergrößert; die
neue reservierte Speicherstelle wird
in *buffer_p
geschrieben, und die neue
Größe wird in *size_p
geschrieben.
Schreiben Sie eine Bibliothek von C-Funktionen für
Berechnungen im Ring Z[X] der univariaten
Polynome mit ganzzahligen Koeffizienten. Verwenden Sie
eine Header-Datei, um alle
benötigten Strukturen und Funktionen zu
deklarieren.
Schreiben Sie Funktionen zum Einlesen und Ausgeben von
Polynomen in diesem Format.
1 3
5 7
2 0