你从滚动骰子开始。移除6并将剩余的骰子加起来得到r_1。现在滚动剩余的骰子,移除6's并将其余的骰子加起来得到r_2;继续这个直到所有骰子都显示6(你没有剩下)。您的分数是S = r_1 + r_2 + ... + r_t,其中t是卷数。如果S>你赢了5米,否则你输了。
代码:
#include <iostream>
#include <stdio.h> // NULL
#include <stdlib.h> // srand, rand
#include <time.h> // time
using namespace std;
void cheddar();
void feta();
int main(){
//cheddar();
feta();
}
void feta(){
int count = 1;
int ri = 0;
srand(time(0));
int dice[7];
int score = 0;
int m = 7;
int fiveofm = 5*m;
int numofdice = 7;
do{
cout << count << " & ";
for(int i=0;i<7;i++){
dice[i]=rand()%6+1;
}
for(int i=0;i<7;i++){
cout << dice[i] << " & ";
}
for(int i=0;i<7;i++){
if (dice[i] != 6){
ri += dice[i];
//score += dice[i];
}
if (dice[i] == 6){
numofdice--;
}
}
cout << ri << endl;
ri = 0;
count++;
}while(numofdice != 0);
/*
if (score <= fiveofm){
cout << "You lose!" << endl;
}
else if (score > fiveofm){
cout << "You win!" << endl;
}
*/
}
任何帮助将不胜感激。
编辑:
抱歉,在输入问题之前我点击了发送。它要么导致无限循环,要么它没有摆脱6然后从那里生成。它只需要重新输入5个新数字,并保持与之前相同的数字。
例如:
`2 & 3 & 3 & 4 & 1 & 5 & 6 & 18`
`6 & 1 & 1 & 6 & 1 & 4 & 2 & 9`
`5 & 3 & 6 & 6 & 5 & 5 & 4 & 22`
`5 & 3 & 3 & 3 & 3 & 6 & 5 & 22`
`2 & 5 & 5 & 3 & 6 & 5 & 1 & 21`
答案 0 :(得分:0)
你不应该继续滚动所有骰子:
for(int i=0;i<7;i++)
相反,只重新播放仍在播放的内容:
int m = 7;
int numofdice = m;
do{
cout << count << " & ";
for(int i=numofdice-1; i>=0; --i){
dice[i]=rand()%6+1;
cout << dice[i] << " & ";
if (dice[i] == 6){
numofdice--;
}
else{
ri += dice[i];
//score += dice[i];
}
}
cout << ri << endl;
ri = 0;
count++;
}while(numofdice != 0);
(请注意,当你这样做时,实际上不需要数组。)