更改数组值

时间:2017-10-23 18:34:16

标签: c++ arrays

我想知道如果有人满足程序中的条件,是否有人可以引导我如何更改数组列表中的值。

我的意思是,如果用户不想保留骰子的值,我只想掷骰子。

所以我创建了这个函数来掷骰子:

int roll[numDice];

for(int i = 0; i <= numDice; i++){
    roll[i] = rand()%6+1;
}

这会给我随机数字,但程序中有很多骰子。

所以现在我要求用户保留最常用的号码(制作Yahtzee)。

所以我做了一串if if else:

if (usersKeep == roll[1]){
     cout << "we will keep this dice 1";
}

所以我想在这个函数中保留这个值(没有它滚动)然后在另一个其他掷骰子的其余部分。但是我不知道改变其他骰子价值或保持骰子的逻辑。

2 个答案:

答案 0 :(得分:1)

你不应该测试数组元素的值,你应该测试索引(因为它们可能在多个骰子上有相同的滚动)。然后只使用if/else

if (usersKeep == i) {
    cout << "We will keep this die " << i << '\n';
} else {
    cout << "Rolling die " << i << '\n';
    roll[i] = rand() % 6 + 1;
}

请注意,此usersKeep变量只允许他们保留一个骰子,但是Yahtzee允许您选择多个骰子来保留。您可以使用std::set<int>来保存列表,并测试i是否是该集合的成员。

答案 1 :(得分:0)

如果它真的是一个yahtzee,你有一个固定数量的骰子,5如果我记得很清楚。然后你需要5个int。

但作为一种标记是否要保留骰子的方法,你可以使用一种结构。

typedef struct dice {
    int value;
    int keep;
}    dice;

然后有一个骰子阵列。

dice dices[5];

首先设置dices[n].keep = 0 然后在循环中添加一个条件。

for(int i = 0; i < 5; i++) {
    if (roll[i].keep == 1) {
        roll[i].value = rand()%6+1;
    }
}

当用户决定保留骰子时

if (...) //depends on how you want to ask the user
    dices[i].keep = 1;

希望有所帮助。