Зацикливание функции

187
03 октября 2017, 06:02

Работа выполняется в VS 2015, программа компилируется без ошибок, после ввода 1-го числа вызывается фу-я "input" и множество раз сравнивается это введенное число с случайно генерируемым, без возможно ввести его 2 раз.

//функция ввода предпологаемого числа
int input(int tries, int guess, int number)
{
while (true) {
    if (guess > number) {
        cout << "Число слишком БОЛЬШОЕ!\n" << endl;
    }
    else if (guess < number) {
        cout << "Число слишком МАЛЕНЬКОЕ!\n" << endl;
    }
    else {
        break;
    }
    ++tries;
}
return tries;
}
//со скольки попыток угадал пользователь, если вообще угадал
void test(int tries)
 {
    if (tries >= 20) {
    cout << "Вы исчерпали количество попыток!\n";
}
else {
    if (tries == 1) {
        cout << "Наконец то, вы угадали за " << tries << " попытку!";
    }
    else if (tries == 2 || tries == 3 || tries == 4) {
        cout << "Наконец то, вы угадали за " << tries << " попытки!";
    }
    else {
        cout << "Наконец то, вы угадали за " << tries << " попыток!";
    }
}
}
// продолжить угадывать или закончить
void contin(char answer)
{
    while (true) {
    if (answer == 'n' || answer == 'y') {
        break;
    }
    else {
        cout << "Введите ваш выбор\'y\' или \'n\'\n";
    }
    if (answer == 'n') {
        cout << "Жаль!";
        break;
    }
    else {
        cout << "\n\n";
    }
}
}
int main()
{
  setlocale(LC_ALL, "Russian");
srand(time(NULL));
while (true) {
    int number = rand() % 100 + 1;
    int guess; //Предпологаемое число пользователя
    int tries = 0; //Количество попыток 
    char answer; //Ответ на предложение продолжить игру
    string name;
    cout << "Введите имя";
    cin >> name;
        cout << "Введите число от 1 до 100 (" << 20 - tries << " попыток осталось): ";
        cin >> guess;
        cin.ignore();
        input(tries, guess, number);
        test(tries);
        cout << "Хотите ли сыграть еще раз(д/н)? ";
        cin >> answer;
        cin.ignore();
        contin(answer);
    cout << "\nНажимет на любую клавишу чтобы завершить!";
    cin.ignore();
    return 0;
}
} 
Answer 1

Значение, возвращенное input, надо передать в test

    test(input(tries, guess, number));

Исправить

int input(int tries, int guess, int number)
{
while (true) {
    if (guess > number) {
        cout << "Число слишком БОЛЬШОЕ!\n" << endl;
    }
    else if (guess < number) {
        cout << "Число слишком МАЛЕНЬКОЕ!\n" << endl;
    }
    else {
        break;
    }
    cout<<"Введите новое число";
    cin>>guess;
    ++tries;
}
return tries;
}
READ ALSO
Как решить проблему с libSOIL.a: error LNK2019:?

Как решить проблему с libSOIL.a: error LNK2019:?

Дело в том, что я невнимательно смотрел, как все делается, и не переименовал libSOILa в SOIL

256
Ошибка чтения из файла в char*. C++

Ошибка чтения из файла в char*. C++

Первое - код для понимания, какой объект я буду инициализировать, остальные - поля классов

286
Создание компаратора для std::list::sort с++

Создание компаратора для std::list::sort с++

У меня задание написать Отсортировать числовую последовательность в порядке возрастания количества делителей её элементов, используя...

251
jquery вытащить id из ссылки

jquery вытащить id из ссылки

Как можно выдернуть id в моем случаи 4681?

283