Почему при втором срабатывании функции число не делится?
#include <iostream>
using namespace std;
int generateRandBone(){
int Bone = 0; // какого чёрта на второе срабатывание оно не обнуляет?
while (true) {
Bone = rand() % 6;
if (Bone != 0) {
break;
return Bone;
}
}
}
int oneBone, twoBone;
int main()
{
setlocale(LC_CTYPE, "");
cout << "Кто первый ходит?\n";
cout << "1) Человек\n";
cout << "2) Бот\n";
cout << "3) Рандом\n";
int userInput;
cin >> userInput;
if (userInput == 1) {
while (true)
{
oneBone = generateRandBone(); // пытался делить прям во функции, но а второй раз не делилось
twoBone = generateRandBone();
cout << "Вы потрясли кости в руке, хотите потрясти ещё или бросить?";
cout << "1) Потрясти ещё";
cout << "2) Бросить";
cin >> userInput;
if (userInput == 1)
{
;
}
else {
break;
}
}
cout << oneBone;
switch (oneBone)
{
case 1:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << "| * |" << endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
case 2:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| * |" << endl;
cout << "| |" << endl;
cout << "| * |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
case 3:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| * |" << endl;
cout << "| * |" << endl;
cout << "| * |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
case 4:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| * * |" << endl;
cout << "| |" << endl;
cout << "| * * |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
case 5:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| * * |" << endl;
cout << "| * |" << endl;
cout << "| * * |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
case 6:
cout << "===========" << endl;
cout << "| |" << endl;
cout << "| * * |" << endl;
cout << "| * * |" << endl;
cout << "| * * |" << endl;
cout << "| |" << endl;
cout << "===========" << endl;
break;
}
}
}
Почему на вторую генерацию функции он не делится целочисленно на 6?
Ответы (1 шт):
Автор решения: LShadow77
→ Ссылка
if (Bone != 0) {
break;
return Bone;
}
Аж по глазам резануло! break тут явно лишний! А вообще, если вам нужно рандомное число от 1 до 6 (насколько можно догадаться), то вы тут нагородили с циклом. Проще гораздо всё:
int generateRandBone(){
return rand()%6+1;
}
Продолжим...
if (userInput == 1)
{
;
}
else {
break;
}
А можно, опять же, проще:
if (userInput != 1) break;
Но корректнее будет всё же перестроить цикл вот так:
while (true)
{
oneBone = generateRandBone();
twoBone = generateRandBone();
cout << "Вы потрясли кости в руке, хотите потрясти ещё или бросить?";
cout << "1) Потрясти ещё";
cout << "2) Бросить";
while (true)
{
cin >> userInput;
if ((userInput==1)||(userInput==2)) break;
cout << "Неверный ввод, повторите ещё раз!" <<endl;
}
if (userInput != 1) break;
}