0

我需要一个模拟掷骰子的程序。我写了代码,但我在每卷上得到 1 个数字。我需要得到 5 个数字。这是我的代码:

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <string>
using namespace std;

struct Dice
{
    int die[5];
};

void roll(Dice&);
void print(Dice);

int main()
{
    Dice myDice;

    roll(myDice);
    print (myDice);
    return 0;
}

void roll(Dice &num)
{
    for(int i = 0; i < 5; i++)
        num.die[i] = rand()%10;
}

void print(Dice num)
{
    for(int i = 0; i < 5; i++)
        cout << "You rolled: " << num.die[i] << endl;
}

输出应该与此类似:

You rolled 6 6 5 5 6
You rolled 5 1 1 5 3
You rolled 5 6 2 2 1
You rolled 6 4 3 4 4
You rolled 3 4 2 6 5

但我的输出是:

You rolled 6 
You rolled 5 
You rolled 5 
You rolled 6
You rolled 3

请帮我弄清楚!

4

3 回答 3

0

你需要更多类似的东西:

void print (Dice num)
{
   cout << "You rolled: ";
   for (int i = 0; i < 5; i++)
       cout << num.die[i];
   cout << endl;
}
于 2013-10-23T04:45:32.773 回答
0

你的代码只掷一个骰子 5 次,而不是 5 个骰子 5 次。进行这些更改

Dice myDice;
for (int i =0;i < 5;i++) {
roll(myDice);
print (myDice)  
}

在主要和

cout << "You rolled: ";
for (int i = 0; i < 5; i++)
cout << num.die[i]<< "\t";
cout << endl;

在打印功能中

于 2013-10-23T05:00:52.257 回答
0

请更仔细地检查您的逻辑。1. roll() 用随机滚动填充每个骰子。2. print() 打印每个骰子的值。

换句话说,您的代码打印出您想要的输出的第一卷。如果您想在一行中输出所有 5 个滚动,那么 cout 可能有办法做到这一点,否则您可以使用 printf() 而不使用换行符(然后在末尾添加一个换行符的额外 printf() )。

那么你需要在你的例子中运行 5 次你想要的,这意味着你想要循环 roll() 和 print() 所以你多次调用它们。

如果这是您的家庭作业,我建议您在让我们为您解决之前进一步研究它。

于 2013-10-23T04:47:51.657 回答