Programmieren Fachbereich Elektrotechnik Übung 4 Aufgabe4_1: Zufallszahlen Die Standardlibrary bietet Funktionen zur Generierung von Zufallszahlen. Dazu muß der Aufruf #include <stdlib.h> in ihr Programm eingebunden sein. Der Zufallsgenerator wird realisiert durch die Funktion int rand(). Sie erzeugt bei wiederholtem Aufruf eine Folge von Pseudozufallszahlen (Integerzahlen) zwischen 0 und RAND_MAX, einer Konstanten, die in stdlib.h definiert ist. Der Zufallsgenerator wird initialisiert mit der Funktion srand(int), d.h. durch Aufruf dieser Funktion mit der Angabe irgendeiner Integerzahl wird die Basis für eine neue Folge von Pseudozufallszahlen vorgegeben. Schreiben Sie nun ein Programm, das einen Würfel nachgebildet. Es sollen 10 Zufallszahlen zwischen 1 und 6 ausgegeben werden. Erweitern Sie Ihr Programm so, daß nun 10 Zufallszahlen zwischen 0 und 1 ausgegeben werden (Datentyp float). Aufgabe4_2: Monte-Carlo Methode Mit Hilfe des Zufallsgenerators soll nun die Zahl Pi ermittelt werden. Stellen Sie sich dazu folgendes Experiment vor: In ein Quadrat mit der Seitenlänge 1 wird ein Viertelkreis gezeichnet. Auf dieses Quadrat fallen nun (zufällig verteilte) Regentropfen. Wenn man nun die Regentropfen zählt und zusätzlich den Anteil ermittelt, der innerhalb des Viertelkreises gefallen ist, so wird bei genügend großer Anzahl von Regentropfen das Verhältnis von gesamter Tropfenzahl zu Tropfenzahl im Viertelkreis das Verhältnis der Flächen ergeben. Radius = 1 Die Fläche des Viertelkreises ist ¼ r2 Pi, die Fläche des Quadrats ist r2 , daraus läßt sich Pi berechnen. Schreiben Sie ein Programm, das dieses Experiment nachbildet und geben Sie den ermittelten Wert von Pi aus. Hinweis: Ein zufälliger Regentropfen wird durch seine x- und y-Koordinate angegeben. Sowohl x- wie y-Koordinate werden als Zufallszahl zwischen 0 und 1 generiert. 2 2 2 Ein Tropfen liegt innerhalb des Viertelkreises, wenn gilt : x + y < r (Pythagoras!!) Übung 4 1/2 Programmieren Fachbereich Elektrotechnik Aufgabe 4_1: Nochmal Fahrenheit In einer früheren Aufgabe wurde die Umrechnung von Celsius nach Fahrenheit programmiert. Schreiben Sie nun diese Umrechnung als Funktion. Eingangsparameter sind Temperatur und Benennung, Rückgabewert ist der umgewandelte Temperaturwert. Geben Sie eine Tabelle aus ,die in 10er Schritten von –20 Grad Celsius bis 120 Grad Celsius die zugehörigen Fahrenheitwerte angibt bzw. die von 0 Grad Fahrenheit bis 140 Grad Fahrenheit die Celsiuswerte angibt. Aufgabe 4_2: Serien/Parallel-Schaltung Schreiben Sie eine Funktion R_Par, die den Gesamtwiderstand zweier parallel geschalteter Widerstände berechnet sowie eine Funktion R_Ser für die Berechnung des Gesamtwiderstands zweier in Reihe geschalteter Widerstände. Ermitteln Sie mit diesen Funktionen den Widerstand Rges folgender Schaltung: R4 R2 R3 R1 Hinweis: Die Funktionen können Funktionsaufrufs verwenden! als Parameter das Ergebnis eines anderen Aufgabe4_3: Vektor Der Zufallsgenerator soll nun getestet werden. Erzeugen Sie Integer-Zufallszahlen im Bereich von 0 bis zu einer Konstanten ZUFALL_MAX. Es soll nun ermittelt werden, wie oft die einzelnen Zufallszahlen auftreten. Verwenden Sie dazu einen Vektor mit der Länge ZUFALL_MAX. Benützen Sie nun die Zufallszahl als Index und erhöhen Sie bei jedem Auftreten der Zufallszahl den Inhalt des entsprechenden Vektor-Elements. Der Vektor wird (ausnahmsweise) global definiert. Erstellen Sie nun folgende Funktionen: void vektor_fuellen (int anzahl) Die Zufallsfunktion wird anzahl-mal aufgerufen und der Vektor wird gefüllt. int vektor_max () Die Funktion liefert den maximalen Wert des Vektors zurück int vektor_min (int anzahl) Die Funktion liefert den minimalen Wert des Vektors zurück float vektor_mittel (int anzahl) Die Funktion berechnet den Mittelwert aller Zufallszahlen void vektor_print () Die Inhalte des Vektors werden auf dem Bildschirm ausgegeben Schreiben Sie das Programm so, daß im Hauptprogramm nur mehr Eingaben, Ausgaben und die oben definierten Funktionen stehen. Übung 4 2/2