-3

我在这里遇到问题,如果有人可以在这里帮助我,那就太好了。这是我第一次使用这个程序,所以不要评判。

#include <cstdlib>
#include <iostream>

using namespace std;
int throw1, throw2, throw3, throw4;
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=(bet1, bet2, bet3);
int deposit;
int account;

int main(){
    int count = 0;

    while(count < 3){

        cin>>deposit;

        while(deposit>5000 || deposit<0){                //Makes sure so that my deposit is between 0-5000
            cout<<"deposit failed"<<endl;
            cin>>deposit;

        }
        account = deposit;
        cout<<"You have deposited" <<deposit<<"Swedish Krona"<<endl;   
        cout<<"and you have this much cash on your account"<<account<<"Swedish Krona"<<endl;

        if (konto>499){                 //Makes sure so that i have the money to bet, and if i dont have the money, i can just put in more 
            cout<<"please place your bet"<<endl;
            cout<<"bet1=100, bet2=300, bet3=500"<<endl;
            cin>>bet1;
            cin>>bet2;
            cin>>bet3;
            account = (deposit - bet);
            cout<<"you have this much cash on your account"<<account<<"Swedish Krona"<<endl;
        }
        else if(account>299){
            cout<<"please place your bet"<<endl;
            cout<<"bet1=100, bet=300"<<endl;     
            cin>>bet1;
            cin>>bet2;
            account =(deposit - bet);
            cout<<"you have this much cash on your account"<<account<<"Swedish Krona"<<endl;
        }
        else if(account>99){
            cout<<"please place your bet"<<endl;
            cout<<"bet1=100"<<endl;
            cin>>bet1;
            cout<<"you have placed your bet"<<bet<<"Swedish Krona"<<endl;
        }

        while (account<100 || deposit>5000){
            cout<<"insufficient funds"<<endl;
            cin>>deposit;
            account=deposit;
        }

        {
            cout<<"Throw dice"<<endl;
            srand(time(0)); 
            Throw1 = rand() % 6 + 1;
            Throw2 = rand() % 6 + 1;
            Throw3 = rand() % 6 + 1;
            Throw4 = rand() % 6 + 1;
            cout<<"You rolled"<<Throw1<<endl;
            cout<<"You rolled"<<Throw2<<endl;
            cout<<"Computer rolled"<<Throw3<<endl;
            cout<<"Computer rolled"<<Throw4<<endl;
        }
    }
    count++;

    system ("pause");
}

所以这里的问题是,出于某种原因,我总是下注 500,即使输入 bet1 或 bet2,我也不知道如何解决这个问题。然后我的循环函数(int count 0; while(count < 3)count++)开始无休止地循环,而我没有按下任何东西,即使我在简单的编码中使用相同的循环函数,比如只是输入一些 cout<< 它工作正常,但是当我在这段代码中使用它时,它会转到排水管,有谁知道为什么会这样,如果有人能回答,将不胜感激,在此先感谢。

4

4 回答 4

9
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=(bet1, bet2, bet3)

最后一行的计算结果如下:100、300、500。逗号分隔的表达式列表的结果将是最后一个值,即 500。因此,您的投注变量将始终设置为 500。

于 2013-10-07T12:29:47.160 回答
5

您在代码下方的评论中陈述的内容(int count 0; while(count < 3)count++)看起来像是一些奇怪的for循环while混合。请再次查看您的 C++ 教科书/在线教程,了解如何编写正确的循环。

在您显示的代码中,在您的while循环中,您不会修改count变量 - 因此如果在循环之前 count < 3,它将永远循环。您的代码的缩进确实具有误导性。我冒昧地重新格式化了您的代码 - 现在您应该看到该count++语句实际上在您的主while循环之外!

当你想要做某事固定次数时,推荐使用for循环,这样更难忘记增量!

于 2013-10-07T12:29:36.840 回答
3

你在循环count 增加,所以它总是为零。要么将其移动到循环内(适当的缩进是关键!),要么使用for循环代替:

for (count = 0; count < 3; ++count) { ... }
于 2013-10-07T12:31:19.537 回答
0

一些忠告,

  • 将您的存款提示 (insattning) 放入函数中
  • 将您的下注提示放入函数中
  • 在提示下注之前检查是否有足够的钱
  • 将输入输入到字符串中,然后验证输入(下面尚未完成)
  • 检查下注是否有效 (=100,=300,=500, bet<=konto)

以下是这些便利功能,

#include <string>
#include <cstdlib>
#include <iostream>

using namespace std;
int kast1, kast2, kast3, kast4;
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=0; //assignment didn't make sense
int insattning=0;
int konto=0;

//deposit
int get_insattning()
{
    int good = 0;
    while( !good )
    {
        cout<<"deposit"<<endl; //prompt for deposit
        cin>>insattning;
        if(insattning>5000 || insattning<0)//Makes sure so that my deposit is between 0-5000
        {
            cout<<"insattning fel, var vänlig och gör rätt denna gången"<<endl;
        }
        else good = 1;
    }
    cout<<"du har nu satt in" <<insattning<<"kr"<<endl;
    return insattning;
}

我不清楚您是要 100,300、500 或 3 个赌注中的 1 个赌注。这是第一个,

//bet
int get_bet()
{
    int good = 0;
    int bet;
    std::string validbets = "";
    if(konto<100){ cout<<"you need more money"; return 0; }
    while( !good )
    {
        cout<<"var vänlig och placera ditt bet"<<endl;
        if(konto>=100){ validbets = "bet1=100"; }
        if(konto>=300){ validbets += ", bet=300"; }
        if(konto>=500){ validbets += ", bet=500"; }
        cout<<validbets<<endl;
        cin>>bet;
        if( bet >= konto ) {
            cout<<"you don't have enough money"<<endl;
            continue;
        }
        if (bet==500){                 //Makes sure so that i have the money to bet, and if i dont have the money, i can just put in more 
            cout<<"du har så här mycket på kontot nu "<<konto<<" kr"<<endl;
            good = 1;
        }
        else if(bet==300){
            cout<<"du har så mycket på kontot nu "<<konto<<" kr"<<endl;
            good = 1;
        }
        else if(bet==100){
            cout<<"du har nu bettat "<<bet<<" kr"<<endl;
            good = 1;
        }
        else {
            cout<<"you must place valid bet"<<endl;
            continue;
        }
    }
    return bet;
}

现在您的主要游戏玩法更清晰/更易于阅读。我不知道获胜条件或支出是什么,而且由于您的提示不是英文,我无法阅读它们来告诉您下一步该做什么,

int main()
{
    int count = 0;
    int bet;
    srand(time(0));
    for( count=0; (count < 3); count++)
    {
        konto = get_insattning();
        if (konto<100)
        {
            cout<<"du har inte nog med pengar, vänligen sätt in pengar"<<endl;
            continue;
        }
        cout<<"och du har så här mycket i ditt konto "<<konto<<" kr"<<endl;
        bet = get_bet();
        //when you bet, reduce konto by bet
        konto = (konto - bet);
        {
            cout<<"slå tärningar"<<endl;
            kast1 = rand() % 6 + 1;
            kast2 = rand() % 6 + 1;
            kast3 = rand() % 6 + 1;
            kast4 = rand() % 6 + 1;
            cout<<"Du fick"<<kast1<<endl;
            cout<<"du fick"<<kast2<<endl;
            cout<<"datorn fick"<<kast3<<endl;
            cout<<"datorn fick"<<kast4<<endl;
        }

您需要编写代码来确定您是赢还是输,然后在赢时添加到 konto,

        //did you win or lose?
        //win?  add money to konto
        //lose?  you have already deducted from konto
    }
    system ("pause");
}

这些建议应该可以帮助您修复程序。

于 2013-10-07T17:07:56.023 回答