📄 montyhall.cpp
字号:
// MontyHall.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>
#include<cmath>
using namespace std;
class Game {
private:
string door[3];
int guess;
int choice; //选择的操作
public:
Game();
int select();
bool chkAnswer();
~Game();
};
Game::Game()
{
int i=rand()%3; //随机取得car存放的位置
door[i]="car";
for(int j=0;j<3;j++)
{
if(j!=i)
door[j]="goat";
}
}
int Game::select()
{
cout << "请选择汽车在哪扇门: ";
cin >> guess;
int goatNum;
for(int i=0;i<3;i++)
{
if(i!=guess-1 && door[i]=="goat")
{
goatNum=i+1;
break;
}
}
cout << "\n主持人打开一扇有羊的门,门号为: " << goatNum << "\n\n";
cout << " 现在您有三种选择方式:" << endl;
cout << "---------------------------------------------------------" << endl;
cout << " 1.维持原先的选择不变" << endl;
cout << " 2.随机决定是维持原先的选择还是选择另一扇门" << endl;
cout << " 3.直接选择另一扇门" << endl;
cout << "---------------------------------------------------------" << endl;
cout << "您选择的是: ";
cin >> choice;
int randNum;
switch(choice)
{
case 1:
break;
case 2:
randNum=rand()%2;
if(randNum==1) //为1选择另一扇门,为0选择不变
guess=6-goatNum-guess; //得到剩下门的号码
break;
case 3:
guess=6-goatNum-guess; //直接选择另一扇门
break;
}
return choice;
}
bool Game::chkAnswer()
{
bool right;
ofstream outfile;
outfile.open("statistic.txt",ios::app);
outfile << " 谜底: " << endl
<< " 1号门: " << door[0] << endl
<< " 2号门: " << door[1] << endl
<< " 3号门: " << door[2] << endl;
if(door[guess-1]=="car")
{
cout << "恭喜您,猜中了汽车!\n\n";
outfile << "您选择的操作: " << choice << " 您猜中了!\n";
right=true;
}
else
{
cout << "抱歉,谢谢参与!\n\n";
outfile << " 您选择的操作: " << choice << " 您失败了!\n";
right=false;
}
outfile << "-----------------------------------------------------\n\n";
outfile.close();
return right;
}
Game::~Game()
{
cout << "新的游戏.................\n\n";
}
int main(){
int select1=0,success1=0;
int select2=0,success2=0;
int select3=0,success3=0;
for(int i=0;i<20;i++)
{
Game test;
int select=test.select();
bool right=test.chkAnswer();
if(select==1){
select1++;
success1=(right? success1+1 :success1 );
}
else if(select==2){
select2++;
success2=(right? success2+1 :success2 );
}
else{
select3++;
success3=(right? success3+1 :success3 );
}
}
outfile << "\n\n一共进行了20次游戏\n";
if(select1!=0){
outfile << "选择操作 1 有 " << select1 << " 次\t" <<"成功概率: " << success1*100.0/select1 << "%\n";
}
if(select2!=0){
outfile << "选择操作 2 有 " << select2 << " 次\t" <<"成功概率: " << success2*100.0/select2 << "%\n";
}
if(select3!=0){
outfile << "选择操作 3 有 " << select3 << " 次\t" <<"成功概率: " << success3*100.0/select3 << "%\n";
}
outfile.close();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -