首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中轧制多个模具

在C++中轧制多个模具
EN

Stack Overflow用户
提问于 2013-12-13 00:14:54
回答 4查看 1.4K关注 0票数 0

我一直在为我的计算机科学课做练习题,其中一篇文章是这样写的:

一双骰子被反复滚动。如果“盒子车”(6-6)出现,玩家A就会赢。如果没有,但是7连续出现了两次(如在一次中,一次显示7,然后在你再次滚动两次死亡之后,另一次出现),B获胜。编写一个C++程序,将一对骰子掷1000次,并输出A和B赢了多少次。

所以我已经得到了程序的主要骨干,并测试了它几次,但每次到目前为止,B球员表现为0次获胜。每次我运行程序时,A玩家的胜利都会波动,所以我相信A是正确编码的,但是任何提示或调试都会非常感谢。该方案:

代码语言:javascript
复制
#include <iostream>
#include <ctime>
using namespace std;

int main()
{
int die1, die2, store = 0, awin = 0, bwin = 0;

srand(time(NULL));

for(int i = 0; i < 1000; i++)
{
    die1 = rand()% 6+1;
    die2 = rand()% 6+1;

    if(die1 == 6 && die2 == 6)
    {
        awin++;
    }
    else if(die1 == 7 || die2 == 7)
    {
        store = 1;
    }

    if(store == 1 && die1 == 7)
    {
        bwin++;
        store = 0;
    }
    else if(store == 1 && die2 == 7)
    {
        bwin++;
        store = 0;
    }

    store = 0;
}

cout << "A has won " << awin << " times and B has won " << bwin << " times." << endl;

system("pause");

}

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-13 00:22:35

rand() % 7永远不会给出7的结果,它是一个数除以7的剩余部分,所以你会得到0到6之间的任何东西。

考虑到您的评论,只需检查一下die1 + die2 == 7,您就会得到排序。

票数 1
EN

Stack Overflow用户

发布于 2013-12-13 00:21:40

rand()%6+1返回范围为1-6。

只有在模具滚动到7的条件下才会分配store,而这种情况永远不会发生。

只有当bwin等于模具辊时,才会增加store,这也从来不会发生,因为存储被初始化为0,并且永远不能满足重新分配它的条件(滚动7)。

因此,bwin总是0,只有当两个骰子滚动6时,awin才会增加。

票数 0
EN

Stack Overflow用户

发布于 2013-12-13 00:23:46

贯穿这一部分的一切似乎都是正确的:

代码语言:javascript
复制
if(die1 == 6 && die2 == 6) {
    awin++;
}

就在这之后,事情就变得不一样了。

首先,检查前一卷是否为7,以及当前滚动是否与前一卷匹配:

代码语言:javascript
复制
if(store == 7 && store == die1 + die2) {

如果结果为真,则b已获胜:

代码语言:javascript
复制
    bwin++;
}

然后存储当前卷的值,以便在下一个卷中了解它:

代码语言:javascript
复制
store = die1+die2;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20556872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档