написал программу на с++ работает, но есть маленький вопрос - Вопросы по С+

Вопрос написал программу на с++ работает, но есть маленький вопрос

Регистрация
12 Дек 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
Простите.. учу С++ самостоятельно.. вот написал программу но не могу понять еще один вопрос

Смысл программы в том что Банк у одного и другого 100. Потом ставятся ставки. Так чтоб были одинаковы ставки. Затем кидаются кубики и у кого больше тот заберает ставку. Программа написана внизу, но прикол в том что я в цикле поставил если хоть один игрок наберет меньше 0 очков, то выход из цикла while (SumIgr2 >= 0 || SumIgr1 >= 0); Но он не выходит.. можете проверить.. проиграв один из игроков он все равно стоит в цикле и кидает кубики.. я понимаю можно иф написать в циклке и будет выходить, но хочется все таки понять если я ошибся там где. Спасибо

int main()
{
int SumIgr1 = 100, SumIgr2 = 100, stavka1, stavka2, ObshayaStavka;

do
{
cout << "Pozhaluysta vvedite stavku pervogo igroka" << endl;
cin >> stavka1;
cout << "Pozhaluysta vvedite stavku vtorogo igroka" << endl;
cin >> stavka2;
while (stavka1 != stavka2)
{
cout << "Pozhaluysta vvedite odinakovie stavki" << endl;
cout << "Vvedite summu stavke Igroka 1 ";
cin >> stavka1;
cout << "Vvedite summu stavki Igroka 2 ";
cin >> stavka2;
}

ObshayaStavka = stavka1 + stavka2;
cout << "Obshaya Stavka: " << ObshayaStavka << endl;

// Randomnoye chislo 1
cout << endl;
int a = rand() % 6 + 1;

// Randomnoye chilso 2
cout << endl;
int b = rand() % 6 + 1;

KartinkaKubikov(a);
KartinkaKubikov(b);

if (a>b)
{
SumIgr1 = SumIgr1 + stavka1;
SumIgr2 = SumIgr2 - stavka1;
}
else if (a == b)
{
SumIgr2 = SumIgr2;
SumIgr1 = SumIgr1;
}
else
{
SumIgr1 = SumIgr1 - stavka1;
SumIgr2 = SumIgr2 + stavka1;
}

if (a>b)
{
cout << "Igrok Perviy WINS etu stavku" << endl;
}
else if (a = b)
{
cout << "Nichya" << endl;
}
else
{
cout << "Igrok Vtoroy WINS etu stavku" << endl;
}

cout << "Summa Igrok 1: " << SumIgr1 << endl;
cout << "Summa Igrok 2: " << SumIgr2 << endl;

} while (SumIgr2 >= 0 || SumIgr1 >= 0);

if (SumIgr1 > SumIgr2)
{
cout << "Pobedil Igrok 1!!!";
}
else
{
cout << "Pobedil Igrok 2!!!";
}
}
 
Регистрация
28 Дек 2013
Сообщения
98
Репутация
0
Спасибо
0
Монет
0
Это не нужно: else if (a == b) { SumIgr2 = SumIgr2; SumIgr1 = SumIgr1; } Зачем лишний код? Дальше меня смутил ещё один момент: while (SumIgr2 >= 0 || SumIgr1 >= 0); Это означает если у игрока 2 или 1 есть больше или равной 0 баллу количества баллов то игра продолжается. Допустим у меня 0 баллов и за какой счёт мне играть спрашивается? Но это моё сугубо субъективное мнения. И ещё, суть проблемы заключается в условии do {} while(); . Цикл do выполняется хотя бы один раз не зависимо от условия. Do (делает) один раз и потом проверяет если условия верно (и уже второй раз выполняет скрипт с проверкой). Другими словами, игрок может играть в эту игру ещё один раз после того как у него закончиться баллы. Была у Игрока 1 10 баллов, поставил ставку в 10 баллов, проиграл и следовательно у него 0 баллов. Но поскольку есть условия while (SumIgr2 >= 0 || SumIgr1 >= 0); то игрок может играть и делать ставку даже когда у него 0 баллов, не вижу скрипта который бы запрещал бы игроку играть в подобном случае. Ну дальше у игрока остаётся -X баллов и он может сыграть ещё раз, потому что тут стоит цикл do{}while();. Подробнее про цикл do{}while();: cppstudio.com/post/361/
 
Сверху Снизу