编写一个程序,模拟重复掷硬币,并持续直到掷出三个连续的硬币。

#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)

08-16 03:33