C Handbuch bestellen

Das C Tutorial (deutsch)

Übungen

Teil 2

Mathematische Funktionen

Mit dem Einbinden der Bibliothek math.h werden viele symbolische Konstanten und mathematische Funktionen bereitgestellt. Die symbolische Konstante M_PI wird zu Pi, also 3.14..., aufgelöst. Die Winkelfunktionen Sinus, Cosinus und Tangens sind nach dem Einbinden der math.h mit sin(x), cos(x) und tan(x) aufrufbar - wobei x der Parameter als Kommazahl ist.

Entwickle ein Programm, das die Sinus-, Cosinus- und Tangens-Werte von 0.0 bis 2 PI auf dem Bildschirm ausgibt. Die Ausgabe der ersten und letzten Zeilen sollte wie folgt aussehen, es werden 3 Nachkommastellen angezeigt.

 
sin(0.0) = 0.000 | cos(0.0) = 1.000 | tan(0.0) = 0.000
sin(0.1) = 0.100 | cos(0.1) = 0.995 | tan(0.1) = 0.100
sin(0.2) = 0.199 | cos(0.2) = 0.980 | tan(0.2) = 0.203
...
sin(6.0) = -0.279 | cos(6.0) = 0.960 | tan(6.0) = -0.291
sin(6.1) = -0.182 | cos(6.1) = 0.983 | tan(6.1) = -0.185
sin(6.2) = -0.083 | cos(6.2) = 0.997 | tan(6.2) = -0.083

Beim Kompilieren unter Linux sollte beim Aufruf von gcc der Parameter lm verwendet werden, damit die math.h aus dem include-Verzeichnis auch wirklich eingebunden wird. Ein Compiler-Aufruf könnte so aussehen:

# gcc -o prog prog.c -lm

Taschenrechner

Entwickle einen Taschenrechner mit den Rechenfunktionen Addition, Subtraktion, Multiplikation und Division. Der Taschenrechner kann um eine Potenz- und Wurzelfunktion erweitert werden. Mit pow(a, b) wird a^b, also a hoch b ausgerechnet. Die Wurzel wird mit sqrt(x) berechnet. Die Funktionen sind in der math.h hinterlegt. In der Beispiel-Ausgabe sieht man die Eingabe von einer Zahl, einer Rechnenfunktion und einer eventuellen zweiten Zahl. Das Kürzel für Potenzrechnen ist ^, für Würzelziehen 2.

 
Zahl 1:		4
Funktion:	*
Zahl 2:		5
Ergebnis:	= 20

Zahl 1:		3
Funktion:	^
Zahl 2:		3
Ergebnis:	= 27

Zahl 1:		36
Funktion:	2

Ergebnis:	= 6

Umrechnung in Zahlensysteme

Schreibe ein Programm, dass eine Zahl im Zehnersystem in ein anderes Zahlensystem umrechnet. Als Eingabe erfolgt eine Zahl und die Basis des Ziel-Zahlensystems. Die Basis soll größer gleich 2 und kleiner gleich 32 sein. Hier eine Beispiel-Ausgabe:

 
Gebe eine Zahl ein: 25
Gebe die Ziel-Basis ein: 2
( 25 ) Basis 10  =  ( 1 1 0 0 1 ) Basis 2

Gebe eine Zahl ein: 255
Gebe die Ziel-Basis ein: 16
( 255 ) Basis 10  =  ( 15 15 ) Basis 16

Gebe eine Zahl ein: 300
Gebe die Ziel-Basis ein: 8
( 300 ) Basis 10  =  ( 4 5 4 ) Basis 8

String-Verarbeitung

In dieser Übung soll eine Funktion geschrieben werden, welche eine HTML-Code-Zeile lesen kann. Eine Typische HTML-Zeile sieht wie folgt aus.

 
<img src="kurt.jpg" width="250" alt="Kurt Kanns" />

Die Funktion erhält solch eine HTML-Zeile und liest alle Attribute und Ihre Werte aus. Ein Attribut hat die Form Attribut-Name="Attribut-Wert". Beim Aufruf der Funktion mit der obigen HTML-Zeile als Parameter werden also diese Daten erfasst und ausgegeben:

Attribut		Wert

src			kurt.jpg
width			250
alt			Kurt Kanns

Der Funktions-Prototyp sieht wie folgt aus. Die Funktion getHtmlAttributes soll pro Aufruf ein Attribut und seinen Wert auslesen. Im Parameter string wird eine HTML-Codezeile übergeben. Der Parameter start gibt an, ab welcher Position im String gesucht wird. In den Zeigern *attrName und *attrValue wird der gefundene Attribut-Name und -Wert gespeichert. Der Rückgabe-Wert ist die Position nach der gefundenen Stelle.

int getHtmlAttributes(const char *string, int start, char *attrNamem, char *attrValue);