Форум программистов, компьютерный форум CyberForum.ru

Бесконечный цикл - C++

Восстановить пароль Регистрация
 
underwaterspace
2 / 2 / 0
Регистрация: 29.01.2013
Сообщений: 47
02.02.2013, 14:46     Бесконечный цикл #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <climits>
bool is_int(double); 
int main()
{
    using namespace std;
    double num;
 
    cout << "Yo, dude! Enter an integer value: ";
    cin >> num;
    while (!is_int(num))    // continue while num is not int-able
    {
        cout << "Out of range -- please try again: ";
        cin >> num;
    }
    int val = int (num);    // type cast
    cout << "You've entered the integer " << val << "\nBye\n";
    system("PAUSE");
    return 0;
}
 
bool is_int(double x)
{
    if (x <= INT_MAX && x >= INT_MIN)   // use climits values
        return true;
    else
        return false; 
}
Если ввести символ, то цикл многократно выдает "Out of range -- please try again:" и не дает ввести следующее значение, почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2013, 14:46     Бесконечный цикл
Посмотрите здесь:

бесконечный цикл C++
C++ Бесконечный цикл
Бесконечный цикл C++
C++ Бесконечный цикл
Бесконечный цикл C++
C++ Бесконечный цикл
C++ Бесконечный цикл
C++ Бесконечный цикл

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
02.02.2013, 14:57     Бесконечный цикл #2
В GNU GCC всё работает как надо.
Попробуйте заменить:
C++
1
2
3
4
5
6
     
    while (!is_int(num))    // continue while num is not int-able
    {
        cout << "Out of range -- please try again: ";
        cin >> num;
    }
на
C++
1
2
3
4
5
6
7
    while (!is_int(num))    // continue while num is not int-able
    {
        cout << "Out of range -- please try again: ";
        cin.clear();
        cin.ignore(1024,'\n');
        cin >> num;
    }
Catstail
Модератор
 Аватар для Catstail
21507 / 10260 / 1670
Регистрация: 12.02.2012
Сообщений: 17,145
02.02.2013, 14:58     Бесконечный цикл #3
Цитата Сообщение от underwaterspace Посмотреть сообщение
и не дает ввести следующее значение, почему?
потому, что условие while не меняется в цикле и остается истиным...
Yandex
Объявления
02.02.2013, 14:58     Бесконечный цикл
Ответ Создать тему
Опции темы

Текущее время: 16:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru