Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Sommersemester 2015 Albert-Ludwigs-Universität Freiburg Dipl.-Math. P. Schreier Übungen Teil 1 Aufgabe 1 (Einlesen und Zuweisen von Variablen, 4 Punkte) Schreiben Sie ein Programm, das zwei int-Werte von der Konsole einliest und in Variablen a,b abspeichert. Lassen Sie sich die beiden Variablen ausgeben. Vertauschen Sie den Inhalt der Variablen und geben Sie sie erneut aus. Aufgabe 2 (Berechnung von Maximum und Minimum, 4 Punkte) Schreiben Sie ein Programm, das das Maximum und Minimum zweier über die Konsole einzulesender Gleitpunktzahlen berechnet und ausgibt. Sie brauchen nur die arithmetischen Grundoperationen und die Funktion fabs aus der Standardbibliothek math.h. Überlegen Sie sich dazu eine Formel, um Maximum und Minimum zweier Zahlen a, b mit Hilfe des Absolutbetrags auszudrücken. Aufgabe 3 (Lösungen der quadratischen Gleichung, 4 Punkte) Die Lösungen der quadratischen Gleichung x2 + px + q = 0 sind für p2 > 4q durch (1) p √ p √ x1 = − + D, x2 = − − D 2 2 2 mit D = p4 − q > 0 gegeben. Schreiben Sie ein Programm, das Koeffizienten p, q von der Konsole einliest und falls möglich die Nullstellen des Polynoms ausgibt. Stellen Sie sicher, dass die vom User eingegeben Werte die Bedingung D > 0 erfüllen. Andernfalls soll das Programm einen Fehler ausgeben. Testen Sie die berechneten Nullstellen, in dem Sie sie in die quadratische Gleichung einsetzen und geben Sie das Ergebnis mit hinreichend vielen Nachkommastellen aus. Bonus zu Aufgabe 3 (Satz von Vieta) Die Addition zweier Zahlen a, b ∈ R ist schlecht konditioniert, d.h. der relative Fehler der Eingangsdaten a, b wird verstärkt, wenn a ≈ −b gilt. Nach dem Satz von Vieta gilt x1 · x2 = q. √ Für den Fall, dass 4|q| p2 ⇒ D ≈ | p2 | ist eine der beiden Additionen in (1) schlecht konditioniert. Können Sie für diesen Fall den Algorithmus aus Aufgabe 3 verbessern? Abgabe bis Sonntag 03.05.2015