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

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

Войти
Регистрация
Восстановить пароль
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
#1

Как избежать зацикливание ввода не числа? - C++

04.01.2012, 23:14. Просмотров 731. Ответов 7
Метки нет (Все метки)

Как избежать зацикливание ввода не числа? чтобы при вводе символа не уходил в бесконечный цикл.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <conio.h>
int main()
{
    int NumberOfElements;
    clrscr(); //clrscr очищает текущее текстовое окно "conio"
    cout<<"Postroit' dvoichnoe derevo poiska iz simvolov. Vse jelementy levogo poddereva zamenit' na simvol '0'. Rezul'tat vyvesti na jekran. Opredelit' glubinu dereva."<<endl;
    mistake: cout<<"Enter the number of elements in the tree(1-10): ";
    cin>>NumberOfElements;
        if(NumberOfElements<=0 || NumberOfElements>10)
        {
            cout<<"A mistake! Invalid range. Please try again!";
            goto mistake;
        }
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 23:14     Как избежать зацикливание ввода не числа?
Посмотрите здесь:

Бесконечный цикл (как избежать?) C++
C++ Задачка про зацикливание при вводе не числа (решено но нужна консульт)
Как избежать ошибок линковщика? C++
Разложение числа на простые множители (упрощенная). Зацикливание? C++
C++ Зацикливание в меню, как исправить?
C++ как избежать зацикливания
C++ Как избежать такую конструкцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
04.01.2012, 23:15     Как избежать зацикливание ввода не числа? #2
Выпилить goto, очевидно.
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
04.01.2012, 23:17  [ТС]     Как избежать зацикливание ввода не числа? #3
goto нужно для повторного ввода. даже если убрать goto все равно вопрос останется как избежать зацикливание ввода не числа?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
04.01.2012, 23:19     Как избежать зацикливание ввода не числа? #4
считать в символ и перевести в число
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
04.01.2012, 23:20     Как избежать зацикливание ввода не числа? #5
goto не нужно практически никогда(по крайней мере, в плюсах). Используй while.
По вопросу: failbit
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
04.01.2012, 23:21  [ТС]     Как избежать зацикливание ввода не числа? #6
alkagolik, как именно?
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
04.01.2012, 23:28     Как избежать зацикливание ввода не числа? #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <limits>
 
//...
 
if(!(cin>>NumberOfElements))
{
    cin.clear();
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    cout<<"Please try again!\n";
    goto mistake; // goto, конечно желательно убрать
}
//...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2012, 00:04     Как избежать зацикливание ввода не числа?
Еще ссылки по теме:

C++ Как определить зацикливание процесса?
C++ Как избежать округления дробных чисел
C++ Как наиболее быстро определить зацикливание связанного списка? (a => b => c => d => e => a)
C++ Как избежать использования кучи проверок?
Вывести на экран сначала числа < 0, затем числа > 0 в порядке их ввода. Использовать очередь C++

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

Или воспользуйтесь поиском по форуму:
romedal
 Аватар для romedal
53 / 53 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
05.01.2012, 00:04     Как избежать зацикливание ввода не числа? #8
Цитата Сообщение от .Malek. Посмотреть сообщение
Как избежать зацикливание ввода не числа?
Через исключение...
Yandex
Объявления
05.01.2012, 00:04     Как избежать зацикливание ввода не числа?
Ответ Создать тему
Опции темы

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