Willkommen auf den Seiten zu der Vorlesung "Programmieren in C". Auf dieser Seite werden zukünftig immer die neuesten Übungsblätter usw. bereitstehen.
Der zweite Teil der Veranstaltung (17:00-18:30) findet im Computerraum G26.1-006 statt. Hier können Fragen zu den Programmen gestellt werden und die fertigen Programme abgegeben werden.
ssh Benutzername@Rechnername
,
um eine Verbindung zu dem Ihnen bekanntgegebenen Rechner
herzustellen.
Die Übungsaufgaben sind in den festgelegten Gruppen selbständig als Hausaufgaben zu bearbeiten. Erwarten Sie nicht, daß die Zeit in der Lehrveranstaltung im Computerraum (dienstags 17:00-18:30) dazu ausreicht, die Programmieraufgaben zu lösen! Diese Zeit dient nur zur Abgabe der Aufgaben und zur Klärung von Fragen und Problemen.
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.
Informieren Sie sich dazu über die
C-Standardprozedur scanf()
, die zum Einlesen
von Daten von der Standardeingabe dient.
Hinweis: Eine
C-Funktion in Ihrem Programm könnte als Schreiben Sie ein C-Programm zur Berechnung der
Primzahlen zwischen 1 und 1000.
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.
Ändern Sie das Programm
matrix2.c
aus der Vorlesung, so daß das
Produkt zweier reeller Matrizen berechnet wird.
Erweitern Sie Ihr Programm aus der 7. 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.
Erweitern Sie Ihr Programm von der letzten Aufgabe wie
folgt:
Schreiben Sie Funktionen zum Einlesen und Ausgeben von
Polynomen in diesem Format.
1 3
5 7
2 0
Erweitern Sie Ihr Programm aus der vorigen Aufgabe:
Am 24. Januar, d.h. in der letzten Semesterwoche, wird nur der erste Teil der Lehrveranstaltung stattfinden. Hier werden u.a. Vorträge von Studenten gehalten, die den Schein für die Veranstaltung durch die Bearbeitung eines größeren Programmierprojekts erhalten.
Matthias Köppe (Homepage)