Linux — файл C ++, выводящий странное число, и часть кода не выполняется

Да уж. Итак, я пытаюсь сделать код для игры в догадки. В этой игре есть жесткий режим. В сложном режиме у вас есть 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

0

Решение

Другие уже ответили на проблему вывода (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;
0

Другие решения

Вы перепутали имена переменных

cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n";

должно быть

cout<<"Wins: "<< win <<"\nLosses: "<< loss <<"\n";

Важно выбрать хорошие имена переменных. Одна из причин заключается в том, что вы не должны путать себя с тем, что означают ваши переменные (если вы путаете себя, подумайте, как это будет для кого-то, кто смотрит на ваш код).

1

Вы не пишете свои переменные win а также loss в cout, Из вашего вставленного кода я вижу, что wins а также losses являются объектами ofstream, что означает, что вы, вероятно, видите там адреса. Я бы посоветовал вам выбирать более информативные имена переменных, чтобы избежать таких ошибок.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector