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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Праздник
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 15
#1

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

21.09.2013, 13:32. Просмотров 229. Ответов 4
Метки нет (Все метки)

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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зацыкливание (C++):

зацыкливание в маткад - MathCAD
метод рунгекута зацыкливается помогите исправить. Ипроверте правильно ли я запрограмировал сам метод пожалуйста.


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

Или воспользуйтесь поиском по форуму:
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_Den_
160 / 156 / 18
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
21.09.2013, 13:35 #2
Я не знаток С++, но мне кажется вся проблема в while(true). Что изменяет это значение? Ничего вроде. Сделайте доп. переменную boolean и в тех местах где нужно говорите где она истинна, а где ложна, и эту переменную поместите в while
alsav22
5417 / 4813 / 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
5417 / 4813 / 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
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru