From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/Prog1/Prakt4/index.htm | 253 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 Bachelor/Prog1/Prakt4/index.htm (limited to 'Bachelor/Prog1/Prakt4/index.htm') diff --git a/Bachelor/Prog1/Prakt4/index.htm b/Bachelor/Prog1/Prakt4/index.htm new file mode 100644 index 0000000..6989787 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/index.htm @@ -0,0 +1,253 @@ + + + + + + +Praktikum 4 + + + + +  + + + + + + + + + + +
 
FH Darmstadt  +
FB Informatik  +
Prof.Dr. H.P.Weber
+
Programmieren I  +
Praktikum
+
+
4
+
+ +
+ + + + +
Ziel: + Sie sollen die Verwendung von Arrays, Funktionen und Rekursion üben sowie + grundlegende Sortierverfahren kennen.  +
+ +
+ + + + +
+

+1    Analyse von Craps

+ +
    +
  • +Schreiben Sie ein Programm, das 1000000-mal das Würfelspiel Craps simuliert. +Ihr Programm soll folgende Fragen beantworten:
  • +
      +
    • +Wieviele Spiele werden gewonnen beim ersten Wurf, beim zweiten Wurf, +...(usw)..., beim 20. +Wurf und nach dem 20.Wurf?
    • + +
    • +Wieviele Spiele werden verloren beim ersten Wurf, beim zweiten Wurf, +...(usw)..., beim 20. +Wurf und nach dem 20.Wurf?
    • + +
    • +Wie groß sind die Chancen Craps zu gewinnen? (Sie sollten herausfinden, dass +Craps eines der fairsten in Spielkasinos gespielten Spiele ist. Was bedeutet +diese Aussage?)
    • + +
    • +Wie lang dauert ein Craps-Spiel im Durchschnitt?
    • + +
    • +Erhöhen sich die Gewinnchancen mit der Dauer eines Craps-Spieles?
    • +
    +
+
+ +
+ + + + +
+

+2    Sortierverfahren 'Direkte Auswahl (Selection Sort)' und +'Direktes Einfügen +(Insertion Sort)' 

+ +
    +
  • +Das Sortierverfahren 'Direkte Auswahl' durchsucht ein unsortiertes Array nach dem kleinsten +Element in dem Array. Danach wird das kleinste Element mit dem ersten Element +des Arrays ausgetauscht. Dieser Prozess wird für das unsortierte Teilarray, das mit dem +zweiten Element des Arrays beginnt, wiederholt. Jeder derartige Durchlauf durch +das Array bewirkt, dass ein weiteres Element an die Stelle kommt, an die es +gehört. Sobald das unsortierte Teilarray nur noch ein Element enthält, ist das Array +sortiert.
  • + +
  • +Schreiben Sie eine iterative Funktion selectionSort +für diesen Algorithmus.
  • + +
  • +Das Sortierverfahren 'Direktes Einfügen' fasst das erste Element eines +unsortierten Arrays als bereits sortiertes Teilarray auf, in das sukzessive die +weiteren Elemente eingefügt werden. Bei diesem Einfügeprozess muss das immer +größer werdende Teilarray zu jedem Zeitpunkt sortiert bleiben. Jedes weitere +Element muss also an die richtige Stelle eingefügt werden. Damit dies möglich +ist, müssen alle Elemente, die größer sind als das Einfügeelement, jeweils +um einen Platz verschoben werden. Sobald das sortierte Teilarray alle Elemente enthält, ist das Array +sortiert.
  • + +
  • +Schreiben Sie eine iterative Funktion insertionSort +für diesen Algorithmus.
  • + +
+
+ +
+ + + + +
+

3    Verteilung der Augenzahlen bei Würfen mit vielen +Würfeln 

+ +
    +
  • +Entwickeln Sie ein Programm, das es dem Benutzer ermöglicht, Würfe mit mehreren Würfeln zu simulieren. Das Simulationsergebnis +ist dann eine Gesamt-Augenzahl, die sich als Summe der Augenzahlen der +einzelnen Würfel ergibt. Werden viele dieser Würfe mit mehreren +Würfeln durchgeführt, ergibt sich eine Häufigkeitsverteilung +für die Gesamt-Augenzahlen. Diese Häufigkeitsverteilung soll +im Konsolenfenster in Form einer Tabelle und als einfache Übersichtsgraphik +ausgegeben werden.
  • + +
  • +Zu Beginn sollen vom Benutzer folgende Eingaben abgefragt werden:
  • + +
      +
    • +Die Zahl der Würfel, die er bei einem Wurf werfen möchte.
    • + +
    • +Die Zahl der Würfe, die er mit der gewählten Anzahl von Würfeln +durchführen möchte.
    • +
    + +
  • +Die Häufigkeitsverteilung für die erzielten Gesamt-Augenzahlen +soll auf zwei verschiedene Arten dargestellt werden:
  • + +
      +
    • +Tabellarische Darstellung als Gegenüberstellung von erzielter Augenzahl +und zugehöriger Häufigkeit. Dabei sollen sowohl die Absolutwerte +der Häufigkeit als auch normierte Werte, die sich bei Division der +Absolutwerte durch die Gesamtzahl der Würfe ergeben, ausgegeben werden.
    • + +
    • +Graphische Darstellung als ein einfaches (um 90 Grad gekipptes) Säulendiagramm +(z.B. entsprechende Anzahl von *).
    • +
    + +
  • +Strukturieren Sie Ihr Programm mit Hilfe von geeignet gewählten Funktionen +für einzelne Teilaufgaben. 
  • +
+
+ +
+ + + + +
+

4    Galton-Brett (fakultativ)

+ Entwickeln Sie ein Programm, das ein "Galton-Brett" und dessen Benutzung simuliert. Das + Simulationsergebnis soll im Konsolenfenster in Form von Zahlenkolonnen und als einfache Übersichtsgraphik ausgegeben werden. +

Funktionsprinzip des Galton-Bretts

+ + + + + +
+

Mit Hilfe eines Galton-Bretts (nach Sir Francis + Galton, 1822-1911) lassen sich wichtige Verteilungen aus der + Statistik experimentell erzeugen. Dabei laufen auf einem geneigt + aufgestellten Nagelbrett Kugeln durch die Nagelreihen. In Sammelbehältern am Fuß des Nagelbretts werden die + Kugeln aufgefangen. Sind die Nägel im Brett so angeordnet, daß + der Abstand zweier nebeneinander liegender Nägel durch den darüberliegenden + Nagel genau halbiert wird, so ist als Verteilung der Kugeln in den + Sammelbehältern die Normalverteilung (Gaußsche Glockenkurve) zu + erwarten.

+
+

+

+
+

Darstellung des Simulationsergebnisses

+

Das Ergebnis der Simulation soll durch Angabe der + Anzahl von Kugeln, die in 25 Sammelbehältern jeweils aufgefangen werden, + ausgegeben werden (Funktion textOutput). + Dabei sollen sowohl die Absolutwerte als auch normierte Werte, die sich + bei Division der Absolutwerte durch die Gesamtanzahl der Kugeln ergeben, + ausgegeben werden. Zusätzlich soll durch eine Funktion + graphicalOutput ein + einfaches (um 90 Grad gekipptes) Säulendiagramm (z.B. entsprechende + Anzahl von *) + im Konsolenfenster ausgegeben werden können. + +

+

Die Bedienung des Programms erfolgt im + Konsolenfenster durch Angabe der gewünschten Anzahl von Kugeln und der + gewünschten Darstellungsart des Ergebnisses. Wenn Sie wollen, können Sie + natürlich auch die Anzahl der Sammelbehälter nicht auf genau 25 + beschränken, sondern vom Benutzer des Programms vorgeben lassen.

+
+

Implementierungshinweis

+
+ + + + + +

Es ist Zufall, ob eine + Kugel an einem Nagel nach links oder rechts rollt. Deshalb sollen + Zufallszahlen, die die Funktion + + rand liefert, verwendet werden. Bedenken Sie, dass an jedem Nagel (d.h. auf + jeder Ebene) nur eine Entscheidung (links oder rechts) zu + treffen ist. Mit jeder Ebene, die die Kugel passiert, wird dadurch die + Menge der noch erreichbaren Sammelbehälter sukzessive eingeschränkt. + Dieses Verhalten soll in eine rekursive Funktion abgebildet werden.

+  
+
+

+ +

+
+
+ + + + \ No newline at end of file -- cgit v1.2.3