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

Зацыкливание - C++

Восстановить пароль Регистрация
 
Праздник
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 15
21.09.2013, 13:32     Зацыкливание #1
C++
1
2
3
4
5
6
7
int raz=0;
    do {
    printf("Введите  ");
    scanf ("%d",&raz);
    if (raz<=0) 
        printf("Ошибка! ");
    else break; } while(true);
Когда пользователь вводит букву то происходит зацикливание, как этого избежать? НЕ используя : cin.sync();
cin.clear();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 13:32     Зацыкливание
Посмотрите здесь:

зацыкливание в маткад MathCAD

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Den_
 Аватар для _Den_
159 / 155 / 18
Регистрация: 21.09.2013
Сообщений: 482
Записей в блоге: 2
21.09.2013, 13:35     Зацыкливание #2
Я не знаток С++, но мне кажется вся проблема в while(true). Что изменяет это значение? Ничего вроде. Сделайте доп. переменную boolean и в тех местах где нужно говорите где она истинна, а где ложна, и эту переменную поместите в while
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2013, 13:50     Зацыкливание #3
Если потоки:
C++
1
2
3
4
5
6
7
8
9
cout << "Enter the number: " << endl;
int i;
while (!(cin >> i) || cin.peek() != '\n')
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error! Retry input\n";
    cout << "Enter the number: " << endl;
}
Праздник
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 15
21.09.2013, 14:03  [ТС]     Зацыкливание #4
Спасибо, но я забыл уточнит)

Добавлено через 59 секунд
В задании нельзя использовать cout и cin только prinf и scanf
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2013, 14:06     Зацыкливание #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int raz=0;
    do 
    {
        printf("Введите  ");
        if (!scanf ("%d",&raz))
        {
            clearerr(stdin);
            while (getchar() != '\n');
            continue;
        }
        if (raz <= 0) 
            printf("Ошибка! ");
        else break; 
    } while(true);
Yandex
Объявления
21.09.2013, 14:06     Зацыкливание
Ответ Создать тему
Опции темы

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