使用函数C ++翻转硬币

时间:2015-12-08 00:37:13

标签: c++ function

我正在尝试创建一个程序,它将使用一个函数来翻转硬币,并使用Main()方法,返回它在2D数组中的头部,尾部和边缘上着陆的结果。它有40%的几率落在头上,有40%的几率落在尾巴上,有20%的几率落在它的边缘。

我有这个功能,但它不会改变Main()方法中的数字。我究竟做错了什么?任何帮助将不胜感激。

#include <iostream>
#include <ctime>

using namespace std;

void coinToss();

int heads = 0, tails = 0, edge = 0;


int main(){
const int NUMROWS = 3;
const int NUMCOLS = 2;

srand(time(NULL));

coinToss();


cout << "Heads: " + heads << endl;   //just to check if function works properly

system("pause");
}

void coinToss(){
int flip = 0;
for (int i = 0; i<100; i++){
    flip = rand() % 10 + 1;
    if (flip < 4){
        heads++;
    } 
    else if (flip < 8){
        tails++;
    }
    else {
        edge++;
    }
}
}

1 个答案:

答案 0 :(得分:0)

您的输出行不正确:

cout << "Heads: " + heads << endl;

这与

相同
cout << ("Heads: " + heads) << endl;

相同
cout << &("Heads: "[heads]) << endl;

由于heads大于7,可能会导致某种垃圾。相反,您必须使用<<

cout << "Heads: " << heads << endl;

说明

  • 不要use using namespace std
  • 如果可能,请使用C ++ 11 <random>库而不是<cstdlib>的{​​{1}}。
  • 尽量避免全局变量。
  • 一旦有了工作计划,请立即前往CR.SE以获得进一步的反馈。