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

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

Восстановить пароль Регистрация
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
04.01.2012, 23:14     Как избежать зацикливание ввода не числа? #1
Как избежать зацикливание ввода не числа? чтобы при вводе символа не уходил в бесконечный цикл.
Пример:
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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
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
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
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
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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)

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

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

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