Programmieren für Physiker

Programmieren fu
¨ r Physiker
Interfakultatives Institut f¨
ur Anwendungen der Informatik
Institut f¨
ur Theoretische Teilchenphysik
Prof. Dr. M. Steinhauser, Dr. A. Mildenberger
http://comp.physik.kit.edu
SS 2015 – Blatt 03
Bearbeitungszeitraum: bis 06. Mai 2015
Aufgabe 7: Die mittlere von drei Zahlen
Pflichtaufgabe
Schreiben Sie ein C++-Programm, das Folgendes leistet: Es werden drei double-Zahlen vom Benutzer erfragt. Dann soll diejenige Zahl ermittelt und ausgegeben werden, die die mittlere Zahl
ist, also diejenige, die in der Mitte stehen w¨
urde, wenn man die drei Zahlen der Gr¨oße nach
sortiert aufschriebe. Verwenden Sie geeignete Fallunterscheidungen.
Beispiel: Eingabe 2, 8 und 7 → mittlere Zahl ist 7
Eingabe -1.7, -3 und 0 → mittlere Zahl ist -1.7
Aufgabe 8: Zahlenraten
Pflichtaufgabe
In einem kleinen Spiel soll eine im Rechner erzeugte, geheime Zufallszahl zwischen 1 und 20
erraten werden. In jeder Spielrunde gibt hierbei der Spieler einen Tipp ab. Falls die Zahl noch
nicht erraten wurde, teilt das Programm mit, ob der Tipp zu groß oder zu klein war. Falls die
richtige Zahl getippt wurde, soll das Programm eine Gratulation und die Anzahl der ben¨otigten
Versuche ausgeben und das Spiel zu Ende sein.
Hinweis: Eine Zufallszahl z im Bereich [1, 20] erhalten Sie, indem Sie im Kopf des Programmes #include <cstdlib> und #include <time.h> einf¨
ugen und dann innerhalb des Hauptprogrammes die Zeilen srand((unsigned int)time(0)) ; und int z = rand()%20 + 1 ;
verwenden. Der erste Ausdruck versetzt den Zufallszahlengenerator rand in einen zuf¨alligen“
”
Ausgangszustand. Der zweite Ausdruck erzeugt die Zufallszahl und legt diese in der Variablen
z ab.
Zusatzfragen (freiwillig): (a) Welche Strategie f¨
uhrt i.A. am Schnellsten zum Ziel? (b) K¨onnen
Sie Ihr Programm so erweitern, dass zus¨atzlich mitgeteilt wird, falls unsinnige Rateversuche“
”
eingegeben werden? Gemeint sind damit Rateversuche, die bereits durch vorherige Ausk¨
unfte
ausgeschlossen werden k¨
onnen.
Aufgabe 9: Wochentag
freiwillig
Schreiben Sie ein Programm, welches zu einem eingegebenen Datum den Wochentag berechnet.
Beachten Sie hierbei Schaltjahre und die Regelung, dass glatt durch 100 teilbare Jahreszahlen
keine Schaltjahre sind, allerdings glatt durch 400 teilbare Jahreszahlen wiederum Schaltjahre
sind.
Berechnen Sie zun¨
achst den Wochentag als Zahl und geben Sie mittels einer switch Anweisung
den Tagesnamen aus.
Anleitung: Bestimmen Sie die Anzahl der Tage zwischen dem eingegebenen und einem (von
Ihnen gew¨ahlten) Referenzdatum, von dem Sie den Wochentag kennen. Wegen der periodischen
Wiederholung der Wochentage gen¨
ugt es dann, den Rest bei Division durch sieben zu betrachten.