硬币翻转程序不会运行

时间:2012-03-23 16:20:07

标签: c++

程序无法运行任何人都可以帮助我理解原因。这是一个硬币翻转游戏,应该询问您想要翻转硬币的次数,询问您是否正在调用头部或尾部,翻转它然后说出您的猜测是对还是错

# include <iostream>
# include <ctime>
# include <cstdlib>
# include <string>
using namespace std;
int tossingtimes()
{
    int tosses;
    cout << "How many tosses will we attempt? " << endl;
    cin >> tosses;

    while(tosses < 1)
    {
        cout << "Error tosses must be greater than or equal to 1. Please submit a correct answer." << endl;
        cin >> tosses;
    }
    return tosses;
}
void H_T ()
{
    char HT;
    cout << "Will you be guessing heads or tails? ('h' or 't')";
    cin >> HT;
    if ( HT = 'h')
    {
        cout << "You chose to select Heads!";
    }
    else
    {
        cout << "You chose to select Tails!";
    }
}
int numHT ()
{
    int num;

    cout << "How many times will " << H_T () << "come up?";
    cin >> num;
    return num;
}
int head_win ()
{
    int heads=0;
    heads++;
    return heads;
}
int tails_win ()
{
    int tails=0;
    tails++;
    return tails;
}
int main()
{
    srand((unsigned) time(0));rand();  
    int result = rand() % 2; 
    while (true) 
    { 
        int tosses_amount, HT, num;
        tosses_amount = tossingtimes();
        H_T ();
        num = numHT();
        cin.ignore (1000, 10); 

        if (tosses_amount == 0) 
            break; 

        for (int i = 0; i < tosses_amount; i++) 
            //random number generator 
        {     
            if (result == 0) 
            {
                int head_win();
                cout << "Heads" << endl;
            }
            else if (result == 1) 
            {
                int tails_win();
                cout << "Tails"<<endl; 
            }

        } 
    } 
    system ("pause");
    return 0;
}

4 个答案:

答案 0 :(得分:2)

我看到的一个明显问题是:

void H_T() { 
// ...
} 

// ...
cout << "How many times will " << H_T() << "come up?";

这会尝试从H_T打印出返回值,但由于H_T具有void返回类型,因此没有这样的事情,编译将失败。

浏览代码,看起来这不是唯一的代码。我想如果我是你,我会备份,或多或少重新开始。一次写下一些小块,并在进入下一个之前验证每个小块是否符合要求。

答案 1 :(得分:1)

void H_T()中你有:

if ( HT = 'h')

将值'h'分配给HT,该值始终为true。您希望==来测试是否相等。

不幸的是,您没有跟踪用户在代码中的任何位置选择的内容......

答案 2 :(得分:0)

初看..

int head_win ()
    {
    int heads=0;
    heads++;
    return heads;
    }
    int tails_win ()
    {
    int tails=0;
    tails++;
    return tails;
    }

head_win()将始终返回1和tails_win()..

int head_win();       this doesn t mean nothing..

你必须声明一个变量:

int wins = head_win();

答案 3 :(得分:0)

问题不在于此代码“不运行”;它甚至没有编译。您的代码中存在许多错误。

  1. numHT()中,您使用的是H_T()的结果;但是H_T()会返回void
  2. 您正试图摆脱无限循环,将tosses_amount的值与0进行比较;但tosses_amount被赋予tossingtimes()的值,该值始终大于0
  3. for循环内注释为// random number generator,您似乎正在尝试使用函数heads_win()tails_win();实际上,您正在使用这些名称声明新功能。
  4. 您实际上从未尝试将您获得的头部或尾部的数量与用户输入的数字进行比较。
  5. 你只掷一次硬币(在main()的开头),只是一遍又一遍地重复使用相同的值。
  6. 还有其他几个错误,但您可以从这些错误开始。