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);