پروژه برنامه مویسی

پروژه برنامه نویسی

پروژه برنامه مویسی

پروژه برنامه نویسی

4-19 برنامه ای بنویسید که بازی کراپز (craps) را 1000 بار اجرا کند.

برنامه ای به زبان C++  بنویسید که بازی کراپز(craps) را 1000 بار اجرا کرده و به پرسش های زیر پاسخ دهد:

الف) در چند بازی بازیکن در اولین پرتاپ دومین پرتاپ و ... در بیستمین پرتاپ و بعد از بیستمین پرتاپ تاس برنده می شود؟


ب) در چند بازی بازیکن در اولین پرتاپ دومین پرتاپ و... در بیستمین پرتاپ و بعد از بیستمین پرتاپ تاس بازنده می شود؟


ج) احتمال برنده شدن در بازی کراپز(craps) چقدر است؟ (توجه: در حل این بخش باید به این واقعیت برسید که کراپز (craps)  یکی از بازی های عادلانه است. به نظر شما این چه معنایی دارد.)


د) طول متوسط یک بازی کراپز (craps) چقدر است؟


ه) ایا با افزایش طول بازی شانس برنده شدن بیشتر می شود?

 


 #include<iostream>

#include<iomanip>
#include<ctime>
#include<cstdlib>
using std::cout;
using std::endl;
using std::ios;
using std::setw;
using std::setprecision;
using std::setiosflags;
int rollDice(void);
int main()
{
enum Outcome {CONTINUE, WIN, LOSE};
const int SIZE = 22, ROLLS = 1000;
int gameStatus, sum, myPoint, roll, length = 0, wins[SIZE] = {0},
losses[SIZE] = {0}, winSum = 0, loseSum = 0;
srand(time(0));
for(int i = 1; i <= ROLLS; ++i) {
sum = rollDice();
roll = 1;
switch(sum) {
case 7: case 11:
gameStatus = WIN;
break;
case 2: case 3: case 12:
gameStatus = LOSE;
break;
default:
gameStatus = CONTINUE;
myPoint = sum;
break;
}
while(gameStatus == CONTINUE) {
sum = rollDice();
++roll;
if(sum == myPoint)
gameStatus = WIN;
else if(sum == 7)
gameStatus = LOSE;
}
if(roll > 21)
roll = 21;
if(gameStatus == WIN) {
++wins[roll];
++winSum;
}
else {
++losses[roll];
++loseSum;
}
}
cout << "Games won or lost after the 20th roll"
<< "\nare displayed as the 21st roll.\n\n";
for(int z = 1; z <= 21; ++z)
cout << setw(3) << wins[z] << " games won and " << setw(3)
    << losses[z] << " game lost on roll " << z << '\n';
//calculate chances of wining
cout << setiosflags(ios::fixed | ios::showpoint)
<< "\nThe chances of winnig are " << winSum << " / "
<< winSum + loseSum << " = " << setprecision(2)
<< 100.0 * winSum / (winSum + loseSum) << "%\n";
//calculate averange length of game
for(int k = 1; k <= 21; ++k)
length += wins[k] * k + losses[k] * k;
cout << "The average game length is " << setprecision(2)
<< length / 100.0 << " rolls." << endl;
getch();
return 0;
}

int rollDice(void)
{
int die1, die2, workSum;
die1 = 1 + rand() % 6;
die2 = 1 + rand() % 6;
workSum = die1 + die2;
return workSum;
}
نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.