编写一个程序,模拟重复掷硬币,并持续直到掷出三个连续的硬币。
#include <iostream>
#include <cmath>
#include <string>
#include <cstdlib>
#include "random.h"
using namespace std;
enum CoinSide {heads, tails};
CoinSide FlipCoin(int flip);
int main(){
int flip;
int heads = 0;
int total_flips = 0;
while( heads < 3){
total_flips++;
if(FlipCoin(flip) == heads){
heads++;
} else{
heads = 0;
}
}
cout << "it took " << total_flips << "to get 3 consecutive heads. " << endl;
}
CoinSide FlipCoin(int flip) {
if (randomChance(0.50)) {
return "heads";
} else {
return "tails";
}
}
现在我遇到一个未知错误,当我运行此代码时,有人知道为什么它不会运行>吗?
最佳答案
FlipCoin
返回布尔值(整数),并且与const char*
进行比较是非法的。 "heads"
和"tails"
就是这样。
您可以返回std::string
进行比较,但我建议您使用enum CoinSide {HEADS, TAILS};
代替。
CoinSide FlipCoin(int flip) {
if (randomChance(0.50)) {
return HEADS;
}
return TAILS;
}
和
if (FlipCoin(flip) == HEADS)