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/prg1p4_1/main.cpp | 148 ++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp (limited to 'Bachelor/Prog1/Prakt4/prg1p4_1/main.cpp') 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 + +using std::cout; +using std::endl; + +#include + +using std::setprecision; +using std::setw; + +// contains function prototypes for functions srand and rand +#include + +#include // 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 (sumWon)/maxGames)*100 << "%" << endl; + cout << "Average Game length: "<< setprecision(2) << static_cast (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 -- cgit v1.2.3