Другие языки программирования и технологии

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

Простите.. учу С++ самостоятельно.. вот написал программу но не могу понять еще один вопрос

Смысл программы в том что Банк у одного и другого 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!!!";
}
}
замени || в условии на &&
ПА
Пётр Антипин
57 144
Лучший ответ
Саша Солнышко а как так?? ведь И это и та и друга должны быть меньше 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/