@tryvols
Front-End разработчик

Почему программа зацикливается если ввести большое число?

Как ни странно - пример из книги Герберта Шилдта. Я мог ожидать от примеров чего угодно, но только не этого:

846ab145c701445da8410d96a3315553.png
Вот исходники примера:
#include <iostream>
#include <cstdlib>
using namespace std;

void play(int m);

int main()
{
  int option, magic;
  magic = rand();
  do {
    cout << "1. Get new magic number\n";
    cout << "2. Play\n";
    cout << "3. Get out\n";
    
    do {
      cout << "Input your variant: ";
      cin >> option;
    } while (option < 1 || option > 3);
    
    switch (option) {
      case 1:
        magic = rand();
        break;
      case 2:
        play(magic);
        break;
      case 3:
        cout << "Goodbye!\n";
        break;
    }
  } while (option != 3);
  return 0;
}

void play(int m)
{
  int t, x;
  for (t = 0; t < 100; t++) {
    cout << "Guess the magic number: ";
    cin >> x;
    if (x == m) {
      cout << "** True **\n";
      return;
    } 
    else if (x < m) cout << "Not enough!\n";
    else cout << "A bit too much!\n";
  }
  cout << "You used every chance to guess the magic number" << "try again.";
}
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
15432
@15432
Системный программист ^_^
В коде отсутствует обработка некорректного ввода. Он точно так же зациклится, если вы введёте букву. Необходимо добавить очистку stdin в случае невозможности распарсить вход как int
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы