У меня есть проблема здесь, было бы очень приятно, если бы кто-нибудь мог помочь мне здесь. Это мой первый раз, когда я использую эту программу, так что не судите.
#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<< все работает нормально, но когда я использую его в этом коде, он истощает, кто-нибудь знает, почему это происходит, был бы признателен, если бы кто-нибудь мог ответить, спасибо заранее.
int bet1 = 100;
int bet2 = 300;
int bet3 = 500;
int bet=(bet1, bet2, bet3)
Последняя строка будет оценена следующим образом: 100, 300, 500. Результатом списка выражений, разделенных запятыми, будет последнее значение, равное 500. Таким образом, ваша переменная ставки всегда будет установлена на 500.
Что вы указали в своем комментарии под кодом, (int count 0; while(count < 3)count++)
выглядит как странная смесь for
а также while
петля. Пожалуйста, еще раз проверьте ваш учебник C ++ / онлайн-уроки о том, как написать правильный цикл.
В коде, который вы показываете, в вашем while
цикл, вы не модифицируете count
переменная — следовательно, она будет зацикливаться вечно, если count < 3 перед петлей. Отступы вашего кода действительно вводят в заблуждение. Я взял на себя смелость переформатировать ваш код — и теперь вы должны увидеть, что count++
утверждение на самом деле находится за пределами вашего основного while
петля!
Если вы хотите сделать что-то в течение определенного количества раз, рекомендуется использовать for
цикл, это делает сложнее забыть приращение!
Вы увеличиваете count
вне петля, так что будет всегда быть ноль. Либо переместите его в цикле (правильный отступ является ключевым!) Или, возможно, используйте for
цикл вместо:
for (count = 0; count < 3; ++count) { ... }
Несколько советов,
Вот эти удобные функции,
#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;
}
Мне не ясно, хотите ли вы 1 ставку в 100 300, или 500, или 3 ставки. Это делает первый,
//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;
}
Вам нужно написать код, чтобы определить, выиграл вы или проиграл, а затем добавить в конто, когда вы выиграете,
//did you win or lose?
//win? add money to konto
//lose? you have already deducted from konto
}
system ("pause");
}
Эти предложения должны помочь вам исправить вашу программу.