diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Prog1/Prakt4 | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Bachelor/Prog1/Prakt4')
| -rw-r--r-- | Bachelor/Prog1/Prakt4/index.htm | 253 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp | 148 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsp | 100 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsw | 29 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_2/main.cpp | 123 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsp | 100 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsw | 29 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_3/main.cpp | 102 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsp | 100 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsw | 29 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_4/main.cpp | 122 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsp | 100 | ||||
| -rw-r--r-- | Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsw | 29 |
13 files changed, 1264 insertions, 0 deletions
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 @@ +<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Praktikum 4</title>
+</head>
+
+<body>
+
+
+<table BORDER CELLSPACING=0 WIDTH="100%" >
+<caption> </caption>
+
+<tr>
+<td WIDTH="25%" BGCOLOR="#EFEFDE">FH Darmstadt
+<br>FB Informatik
+<br>Prof.Dr. H.P.Weber</td>
+
+<td>
+<center><font size="+3">Programmieren I </font>
+<br><font size=+3>Praktikum</font></center>
+</td>
+
+<td WIDTH="25%" BGCOLOR="#EFEFDE">
+<center><font size=+4>4</font></center>
+</td>
+</tr>
+</table>
+
+<br>
+<table border WIDTH="100%" >
+<tr VALIGN=TOP>
+<td>Ziel:</td><td>
+ Sie sollen die Verwendung von Arrays, Funktionen und Rekursion üben sowie
+ grundlegende Sortierverfahren kennen.
+</td>
+</tr>
+</table>
+
+<br>
+<table BORDER CELLSPACING=0 WIDTH="100%" >
+<tr>
+<td>
+<h3>
+<b>1 Analyse von Craps</b></h3>
+
+<ul>
+<li>
+Schreiben Sie ein Programm, das 1000000-mal das Würfelspiel Craps simuliert.
+Ihr Programm soll folgende Fragen beantworten:</li>
+<ul>
+<li>
+Wieviele Spiele werden gewonnen beim ersten Wurf, beim zweiten Wurf,
+...(usw)..., beim 20.
+Wurf und nach dem 20.Wurf?</li>
+
+<li>
+Wieviele Spiele werden verloren beim ersten Wurf, beim zweiten Wurf,
+...(usw)..., beim 20.
+Wurf und nach dem 20.Wurf?</li>
+
+<li>
+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?)</li>
+
+<li>
+Wie lang dauert ein Craps-Spiel im Durchschnitt?</li>
+
+<li>
+Erhöhen sich die Gewinnchancen mit der Dauer eines Craps-Spieles?</li>
+</ul>
+</ul>
+</td>
+</tr>
+</table>
+
+<br>
+<table BORDER="1" CELLSPACING=0 WIDTH="100%" >
+<tr>
+<td>
+<h3>
+<b>2 Sortierverfahren 'Direkte Auswahl (Selection Sort)' und
+'Direktes Einfügen </b>
+<b>(Insertion Sort)' </b></h3>
+
+<ul>
+<li>
+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.</li>
+
+<li>
+Schreiben Sie eine iterative Funktion <b><font face="Courier New">selectionSort</font></b>
+für diesen Algorithmus.</li>
+
+<li>
+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.</li>
+
+<li>
+Schreiben Sie eine iterative Funktion <b><font face="Courier New">insertionSort</font></b>
+für diesen Algorithmus.</li>
+
+</ul>
+</td>
+</tr>
+</table>
+
+<br>
+<table BORDER CELLSPACING=0 WIDTH="100%" >
+<tr>
+<td>
+<h3><b>3 Verteilung der Augenzahlen bei Würfen mit vielen
+Würfeln </b></h3>
+
+<ul>
+<li>
+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.</li>
+
+<li>
+Zu Beginn sollen vom Benutzer folgende Eingaben abgefragt werden:</li>
+
+<ul>
+<li>
+Die Zahl der Würfel, die er bei einem Wurf werfen möchte.</li>
+
+<li>
+Die Zahl der Würfe, die er mit der gewählten Anzahl von Würfeln
+durchführen möchte.</li>
+</ul>
+
+<li>
+Die Häufigkeitsverteilung für die erzielten Gesamt-Augenzahlen
+soll auf zwei verschiedene Arten dargestellt werden:</li>
+
+<ul>
+<li>
+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.</li>
+
+<li>
+Graphische Darstellung als ein einfaches (um 90 Grad gekipptes) Säulendiagramm
+(z.B. entsprechende Anzahl von *).</li>
+</ul>
+
+<li>
+Strukturieren Sie Ihr Programm mit Hilfe von geeignet gewählten Funktionen
+für einzelne Teilaufgaben. </li>
+</ul>
+</td>
+</tr>
+</table>
+
+<br>
+<TABLE BORDER CELLSPACING=0 width="100%">
+<tr>
+<td>
+ <b><h3>4 Galton-Brett (fakultativ)</h3></b>
+ 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.
+ <br><h4>Funktionsprinzip des Galton-Bretts</h4>
+ <TABLE>
+ <TBODY>
+ <TR vAlign=top>
+
+ <TD>
+ <p class="MsoNormal">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.</TD>
+ <TD width=250 bgcolor="#EFEFDE">
+ <div style="mso-element:frame;mso-element-frame-hspace:7.05pt;mso-element-wrap:
+auto;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:page;
+mso-element-left:368.95pt;mso-element-top:2.05pt;mso-height-rule:exactly">
+ <p class="MsoNormal"><img src="index.1.gif" v:shapes="_x0000_i1025" width="192" height="138">
+ </div>
+ </TD></TR></TBODY></TABLE>
+ <h4>Darstellung des Simulationsergebnisses</h4>
+ <p class="MsoNormal">Das Ergebnis der Simulation soll durch Angabe der
+ Anzahl von Kugeln, die in 25 Sammelbehältern jeweils aufgefangen werden,
+ ausgegeben werden (Funktion <b><font face="Courier New">textOutput</font></b>).
+ 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 <b>
+ <font face="Courier New">graphicalOutput</font></b><i> </i>ein
+ einfaches (um 90 Grad gekipptes) Säulendiagramm (z.B. entsprechende
+ Anzahl von <span style="font-family:Courier">*</span><span style="mso-bidi-font-family:Arial">)
+ im Konsolenfenster ausgegeben werden können.<o:p>
+ </o:p>
+ </span></p>
+ <p class="MsoNormal">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.</p>
+ <div style="border:none;border-top:solid windowtext .75pt;padding:1.0pt 0cm 0cm 0cm">
+ <h4>Implementierungshinweis</h4>
+ </div>
+ <TABLE>
+ <TBODY>
+ <TR vAlign=top>
+
+ <TD><p class="MsoNormal" style="tab-stops:134.7pt">Es ist Zufall, ob eine
+ Kugel an einem Nagel nach links oder rechts rollt. Deshalb sollen
+ Zufallszahlen, die die Funktion
+ <span style="font-family:"Letter Gothic"; font-weight:700">
+ <font face="Courier New">rand</font></span><span style="font-family:"Letter Gothic""> </span>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 <b> rekursive</b> Funktion abgebildet werden.</p>
+ </TD>
+ <TD width=250 bgcolor="#EFEFDE">
+ <div style="mso-element:frame;mso-element-frame-hspace:7.05pt;mso-element-wrap:
+auto;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:page;
+mso-element-left:368.95pt;mso-element-top:2.05pt;mso-height-rule:exactly">
+ <p class="MsoNormal">
+ <img src="index.2.gif" v:shapes="_x0000_i1025" width="192" height="143">
+ </div>
+ </TD></TR></TBODY></TABLE>
+</td>
+</tr>
+</TABLE>
+
+</body>
+
+</html>
\ No newline at end of file diff --git a/Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp b/Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp new file mode 100644 index 0000000..f9e3e90 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp @@ -0,0 +1,148 @@ +// Programmieren 1, Praktikum 4, Aufgabe 1
+// Sven Eisenhauer
+// 08.12.2004
+//
+// file: main.cpp
+//
+// purpose: Play craps and analyse results
+//
+//
+//
+//
+
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+#include <iomanip>
+
+using std::setprecision;
+using std::setw;
+
+// contains function prototypes for functions srand and rand
+#include <cstdlib>
+
+#include <ctime> // contains prototype for function time
+
+int rollDice( void ); // function prototype
+
+int main()
+{
+ // enumeration constants represent game status
+ enum Status { CONTINUE, WON, LOST };
+
+ int sum;
+ int myPoint;
+
+ const int maxGames=1000000;
+ const int maxRounds=22;
+
+ int round=1,
+ sumWon=0,
+ sumLost=0,
+ wRounds=0;
+
+ int nrLost[maxRounds]={0},
+ nrWon[maxRounds]={0};
+
+ Status gameStatus; // can contain CONTINUE, WON or LOST
+
+ // randomize random number generator using current time
+ srand( time( 0 ) );
+
+ for (int i=1;i<=maxGames;i++)
+ {
+ round=1;
+ sum = rollDice(); // first roll of the dice
+
+ // determine game status and point based on sum of dice
+ switch ( sum ) {
+
+ // win on first roll
+ case 7:
+ case 11:
+ gameStatus = WON;
+ break;
+
+ // lose on first roll
+ case 2:
+ case 3:
+ case 12:
+ gameStatus = LOST;
+ break;
+
+ // remember point
+ default:
+ gameStatus = CONTINUE;
+ myPoint = sum;
+ // cout << "Point is " << myPoint << endl;
+ break; // optional
+
+ } // end switch
+
+ // while game not complete ...
+ while ( gameStatus == CONTINUE ) {
+ sum = rollDice(); // roll dice again
+ round++;
+
+ // determine game status
+ if ( sum == myPoint ) // win by making point
+ gameStatus = WON;
+ else
+ if ( sum == 7 ) // lose by rolling 7
+ gameStatus = LOST;
+
+ } // end while
+
+ // display won or lost message
+ if ( gameStatus == WON )
+ //cout << "Player wins" << endl;
+ if (round<maxRounds)
+ nrWon[round]++;
+ else
+ nrWon[maxRounds-1]++;
+ else
+ //cout << "Player loses" << endl;
+ if (round<maxRounds)
+ nrLost[round]++;
+ else
+ nrLost[maxRounds-1]++;
+
+ }
+
+ cout << setw(7)<<"Round"<< setw(7)<< "won" << setw(7)<<"lost"<<endl;
+
+ for (i=1;i<maxRounds;i++)
+ {
+ cout << setw(7) << i << setw(7) << nrWon[i] << setw(7) << nrLost[i] << endl;
+ sumWon+=nrWon[i];
+ sumLost+=nrLost[i];
+ wRounds+=((nrWon[i]*i)+(nrLost[i]*i));
+ }
+ cout << endl <<"Total won: " << sumWon << " Total lost: " << sumLost << " Chance to win: "
+ << setprecision(4) << (static_cast <double> (sumWon)/maxGames)*100 << "%" << endl;
+ cout << "Average Game length: "<< setprecision(2) << static_cast <double> (wRounds)/maxGames << " Rounds" << endl;
+
+ return 0; // indicates successful termination
+
+} // end main
+
+// roll dice, calculate sum and display results
+int rollDice( void )
+{
+ int die1;
+ int die2;
+ int workSum;
+
+ die1 = 1 + rand() % 6; // pick random die1 value
+ die2 = 1 + rand() % 6; // pick random die2 value
+ workSum = die1 + die2; // sum die1 and die2
+
+ // display results of this roll
+ // cout << "Player rolled " << die1 << " + " << die2
+ // << " = " << workSum << endl;
+
+ return workSum; // return sum of dice
+
+} // end function rollDice
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsp b/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsp new file mode 100644 index 0000000..d954bb5 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="prg1p4_1" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=prg1p4_1 - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_1.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_1.mak" CFG="prg1p4_1 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "prg1p4_1 - Win32 Release" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE "prg1p4_1 - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "prg1p4_1 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "prg1p4_1 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "prg1p4_1 - Win32 Release"
+# Name "prg1p4_1 - Win32 Debug"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsw b/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsw new file mode 100644 index 0000000..4b8cd6b --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "prg1p4_1"=.\prg1p4_1.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_2/main.cpp b/Bachelor/Prog1/Prakt4/prg1p4_2/main.cpp new file mode 100644 index 0000000..6c30139 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_2/main.cpp @@ -0,0 +1,123 @@ +// Programmieren 1, Praktikum 4, Aufgabe 2
+// Sven Eisenhauer
+// 08.12.2004
+//
+// file: main.cpp
+//
+// purpose: Implementation of Selection Sort and Insertion Sort algorithm
+//
+
+#include <iostream>
+
+using std::cout;
+using std::endl;
+
+#include <iomanip>
+
+using std::setprecision;
+using std::setw;
+
+// contains function prototypes for functions srand and rand
+#include <cstdlib>
+
+#include <ctime>
+
+void selectionSort(int[], int);
+void insertionSort(int[], int);
+
+int main ()
+{
+ const int arraySize=5;
+ int array1[arraySize],array2[arraySize];
+
+ srand(time(0));
+
+ // fill the arrays with some random stuff
+ for (int i=0;i<arraySize;i++)
+ {
+ array1[i]=rand()%1000;
+ array2[i]=array1[i];
+ }
+
+ // shown the unsorted random array
+ cout << "Unsorted Array:" << endl;
+ for (i=0;i<arraySize;i++)
+ {
+ cout << setw(5) << array1[i];
+ }
+ cout << endl;
+
+ // selectionSort
+ selectionSort(array1,arraySize);
+
+ cout << "Selection sorted Array:" << endl;
+ for (i=0;i<arraySize;i++)
+ {
+ cout << setw(5) << array1[i];
+ }
+ cout << endl;
+
+ // insertionSort
+ insertionSort(array2,arraySize);
+
+ cout << "Insertion sorted Array:" << endl;
+ for (i=0;i<arraySize;i++)
+ {
+ cout << setw(5) << array2[i];
+ }
+ cout << endl;
+
+ return 0;
+}
+
+void selectionSort(int a[],int aSize)
+{
+ int hold;
+
+ for (int i=0;i<aSize;i++)
+ {
+ // start from actual position...
+ for (int j=i;j<aSize;j++)
+ {
+ // ... search the minimum...
+ if(a[j]<a[i])
+ {
+ //... and insert it
+ hold=a[i];
+ a[i]=a[j];
+ a[j]=hold;
+ }
+ }
+ }
+} // end function selectionSort
+
+void insertionSort(int a[],int aSize)
+{
+ int temp,i;
+
+ for (int n=1;n<aSize;n++)
+ {
+ // only if we have a wrong order
+ if (a[n]<a[n-1])
+ {
+ // save the value, we want to insert
+ temp=a[n];
+ // we need a second variable
+ i=n-1;
+ // shift all values up till we are at the right place
+ // while the value, which is to be inserted, is smaller than
+ // actual array value
+ while (temp < a[i] && (i>= 0))
+ {
+ // always copy the value from the array field before
+ // so the gap "walks" to the left, until a[i] is at the right place
+ // and we can put temp in it.
+ a[i+1]=a[i];
+ i--;
+ }
+ // i+1 to compensate the last i--, because we want a[i] before the last i--
+ a[i+1]=temp;
+ }
+
+ }
+} // end function insertionSort
\ No newline at end of file diff --git a/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsp b/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsp new file mode 100644 index 0000000..954904e --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="prg1p4_2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=prg1p4_2 - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_2.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_2.mak" CFG="prg1p4_2 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "prg1p4_2 - Win32 Release" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE "prg1p4_2 - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "prg1p4_2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "prg1p4_2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "prg1p4_2 - Win32 Release"
+# Name "prg1p4_2 - Win32 Debug"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsw b/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsw new file mode 100644 index 0000000..fe3d2a4 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_2/prg1p4_2.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "prg1p4_2"=.\prg1p4_2.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_3/main.cpp b/Bachelor/Prog1/Prakt4/prg1p4_3/main.cpp new file mode 100644 index 0000000..fb7e564 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_3/main.cpp @@ -0,0 +1,102 @@ +// Programmieren 1, Praktikum 4, Aufgabe 3
+// Sven Eisenhauer
+// 14.12.2004
+//
+// file: main.cpp
+//
+// purpose: Analyse multiple rolls of multiple dice
+//
+
+#include <iostream>
+
+using std::cin;
+using std::cout;
+using std::endl;
+
+#include <iomanip>
+
+using std::setprecision;
+using std::setw;
+
+// contains function prototypes for functions srand and rand
+#include <cstdlib>
+
+#include <ctime>
+
+void roll(const int, const int, int[]);
+void getPara(int &, int &);
+void printResultTbl(const int[], const int, const int);
+void printResultGrph(const int[], const int, const int);
+
+const int maxDice=20,
+ maxEyes=6,
+ minEyes=1;
+
+int main()
+{
+
+
+ int nrDice,
+ nrRolls;
+
+ int result[(maxDice*maxEyes)+1]={0};
+
+ // initialize random number generator
+ srand(time(0));
+
+ getPara(nrDice,nrRolls);
+
+ roll(nrDice,nrRolls,result);
+
+ printResultTbl(result, nrDice, nrRolls);
+ printResultGrph(result, nrDice, nrRolls);
+
+ return 0;
+}// end main
+
+void getPara(int &nrDice,int &nrRolls)
+{
+ cout << "Please enter number of dice to roll (max. "<<maxDice<<"): ";
+ cin >> nrDice;
+ cout << "Please enter number of rolls: ";
+ cin >> nrRolls;
+} // end function getPara
+
+void roll (const int nDice, const int nrRolls, int resultArray[])
+{
+ int sum;
+
+ for (int n=1;n<=nrRolls;n++)
+ {
+ sum=0;
+ for (int i=1;i<=nDice;i++)
+ sum+=(rand()%6)+1;
+ ++resultArray[sum];
+ }
+
+} // end fnction roll
+
+void printResultTbl(const int resArray[],const int nrDice, const int nrRolls)
+{
+ cout << setw(5) << "Sum" << setw(12) << "Frequency" << setw(20) << "norm. Frequency"<< endl;
+
+ for (int n=(nrDice*minEyes);n<=(nrDice*maxEyes);n++)
+ {
+ cout << setw(5) << n << setw(12) << resArray[n] << setprecision(2)<< setw(20) << (static_cast <double> (resArray[n]))/nrRolls << endl;
+ }
+}// end function printResultTbl
+
+void printResultGrph(const int resArray[],const int nrDice, const int nrRolls)
+{
+ cout << endl;
+
+ const int maxColumns=75;
+
+ for (int n=(nrDice*minEyes);n<=(nrDice*maxEyes);n++)
+ {
+ cout << setw(2) << n << ": ";
+ for (int i=0;i<static_cast <int>(((static_cast <double> (resArray[n]))/nrRolls)*maxColumns);i++)
+ cout<<"*";
+ cout << endl;
+ }
+}// end function printResultGrph
\ No newline at end of file diff --git a/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsp b/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsp new file mode 100644 index 0000000..ba2f06a --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="prg1p4_3" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=prg1p4_3 - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_3.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_3.mak" CFG="prg1p4_3 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "prg1p4_3 - Win32 Release" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE "prg1p4_3 - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "prg1p4_3 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "prg1p4_3 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "prg1p4_3 - Win32 Release"
+# Name "prg1p4_3 - Win32 Debug"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsw b/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsw new file mode 100644 index 0000000..b24236f --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_3/prg1p4_3.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "prg1p4_3"=.\prg1p4_3.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_4/main.cpp b/Bachelor/Prog1/Prakt4/prg1p4_4/main.cpp new file mode 100644 index 0000000..8f481ff --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_4/main.cpp @@ -0,0 +1,122 @@ +// Programmieren 1, Praktikum 4, Aufgabe 4
+// Sven Eisenhauer
+// 14.12.2004
+//
+// file: main.cpp
+//
+// purpose: Simulate a Galton Board
+//
+
+#include <iostream>
+
+using std::cin;
+using std::cout;
+using std::endl;
+
+#include <iomanip>
+
+using std::setprecision;
+using std::setw;
+
+// contains function prototypes for functions srand and rand
+#include <cstdlib>
+
+#include <ctime>
+
+const int maxBoxes=100;
+const int minBoxes=1;
+
+int fall(int &,int &);
+void getInput(int &,int &, char &);
+void textOutput(int[], const int, const int);
+void graphicalOutput(int[], const int, const int);
+
+int main()
+{
+ srand(time(0));
+
+ int nrBalls;
+ int minBox,maxBox,nrBox;
+ int box;
+ int result[maxBoxes+1]={0};
+ char outputMode;
+
+ getInput(nrBalls,nrBox,outputMode);
+ for (int i=1;i<=nrBalls;i++)
+ {
+ minBox=minBoxes;
+ maxBox=nrBox;
+ box=fall(minBox,maxBox);
+ result[box]++;
+ }
+ if (outputMode=='t' || outputMode=='T')
+ textOutput(result,nrBalls,nrBox);
+ else
+ graphicalOutput(result,nrBalls,nrBox);
+
+ return 0;
+}// end function main
+
+void getInput(int& nrBa, int& nrBo, char &outpMode)
+{
+ cout << "Please enter number of boxes (max." << maxBoxes <<"): ";
+ cin>>nrBo;
+ cout << "Please enter number of balls: ";
+ cin>>nrBa;
+ cout << "Please enter output mode: [T/t] table, [G/g] graphical: ";
+ cin >> outpMode;
+}// end function getInput
+
+int fall(int &minB, int &maxB)
+{
+ // if we are not over last 2 boxes
+ if((maxB-minB)>1)
+ {
+ if (0==rand()%2)
+ // ball falls to the right => we cannot reach the most left box anymore
+ minB++;
+ else
+ // ball falls to the left => we cannot reach the most right box anymore
+ maxB--;
+ fall(minB,maxB);
+ //return 0;
+ }
+ // only 2 possible boxes left... the base case
+ else
+ {
+ if (0==rand()%2)
+ // left box
+ return minB;
+ else
+ // right box
+ return maxB;
+ }
+}
+
+void textOutput(int resArray[], const int balls,const int nrBox)
+{
+ //int sum=0;
+
+ cout << endl << setw(10) << "Box" << setw(10) << "Balls" << setw(16) << "Norm." <<endl;
+ for (int n=1;n<=nrBox;n++)
+ {
+ cout << setw(10) << n << setw(10) << resArray[n] << setw(16)<<static_cast <double>(resArray[n])/balls<<endl;
+ // sum+=resArray[n];
+ }
+ //cout << endl << "Sum: " << sum << endl << endl;
+}// end function textOutput
+
+void graphicalOutput(int resArray[], const int balls, const int nrBox)
+{
+ const int maxColumns=75;
+
+ for (int n=1;n<=nrBox;n++)
+ {
+ cout << setw(2) << n << ": ";
+ for (int i=0;i<static_cast <int>(((static_cast <double> (resArray[n]))/balls)*maxColumns);i++)
+ cout<<"*";
+ cout << endl;
+
+
+ }
+}// end function graphicalOutput
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsp b/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsp new file mode 100644 index 0000000..760be15 --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="prg1p4_4" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=prg1p4_4 - Win32 Debug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_4.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "prg1p4_4.mak" CFG="prg1p4_4 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "prg1p4_4 - Win32 Release" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE "prg1p4_4 - Win32 Debug" (basierend auf "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "prg1p4_4 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "prg1p4_4 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "prg1p4_4 - Win32 Release"
+# Name "prg1p4_4 - Win32 Debug"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsw b/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsw new file mode 100644 index 0000000..85399da --- /dev/null +++ b/Bachelor/Prog1/Prakt4/prg1p4_4/prg1p4_4.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN!
+
+###############################################################################
+
+Project: "prg1p4_4"=.\prg1p4_4.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
|
