summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/Prakt4/prg1p4_1
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Prog1/Prakt4/prg1p4_1
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Prog1/Prakt4/prg1p4_1')
-rw-r--r--Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp148
-rw-r--r--Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsp100
-rw-r--r--Bachelor/Prog1/Prakt4/prg1p4_1/prg1p4_1.dsw29
3 files changed, 277 insertions, 0 deletions
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>
+{{{
+}}}
+
+###############################################################################
+