Да уж. Итак, я пытаюсь сделать код для игры в догадки. В этой игре есть жесткий режим. В сложном режиме у вас есть 15 догадок, и вам нужно угадать от 1 до 500. Но моя проблема заключается в следующем:
Я пытаюсь сохранить жесткий режим & отображать ваши выигрыши / проигрыши, но когда он выводит содержимое wins.txt, он выводит что-то вроде этого:
Wins: 0x7fffee26df78
Losses: 0x7fffee26e178
Это действительно смущает меня. Вот часть кода, которую я имею для этого:
ifstream losses_var("losses.txt");
ifstream wins_var("wins.txt");
losses_var>> loss;
wins_var>> win;
wins_var.close();
losses_var.close();
Затем вызывается с помощью:
cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n"
Если вы хотите увидеть полный исходный код, это здесь: http://pastebin.com/gPT37uBJ
Моя вторая проблема:
Жесткий режим не будет отображаться, когда вы выиграете. Это в значительной степени вся проблема. В моем коде цикл запроса пользователей о вводе использует
пока (угадай! = randNum)
Итак, в конце скобки у меня есть то, что я хочу, чтобы код отображался, когда пользователь побеждает, но он просто не запускается. Это просто упоры. Я хотел бы, чтобы кто-то мог помочь мне с этим. Строка с ошибкой — строка с 97 по 105. Опять же, исходный код находится здесь: http://pastebin.com/gPT37uBJ
Другие уже ответили на проблему вывода (win
против wins
). Другая проблема, вероятно, в вашей логике while
вложение петли. Внешний цикл (while (guess != randNum)
), но его тело содержит весь внутренний цикл (while (guesses_left != 0)
). Это означает, что внешнее условие не проверяется снова, пока не закончится внутренний цикл, что означает, что у вас закончились догадки. Также обратите внимание, что если вы угадаете правильно, внутренний цикл никогда не прекратится. Вы, вероятно, хотите что-то вроде этого:
while (guesses_left > 0) {
// input user's guess
if (guess < randNum) {
// process it
} else if (guess > randNum) {
// process it
} else {
// it's equal, user won
// do what's necessary for a win
return 0;
}
}
// ran out of guesses
// do what's necessary for a loss
return 0;
Вы перепутали имена переменных
cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n";
должно быть
cout<<"Wins: "<< win <<"\nLosses: "<< loss <<"\n";
Важно выбрать хорошие имена переменных. Одна из причин заключается в том, что вы не должны путать себя с тем, что означают ваши переменные (если вы путаете себя, подумайте, как это будет для кого-то, кто смотрит на ваш код).
Вы не пишете свои переменные win
а также loss
в cout
, Из вашего вставленного кода я вижу, что wins
а также losses
являются объектами ofstream, что означает, что вы, вероятно, видите там адреса. Я бы посоветовал вам выбирать более информативные имена переменных, чтобы избежать таких ошибок.