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

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

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

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

04.01.2012, 23:14. Просмотров 775. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 23:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как избежать зацикливание ввода не числа? (C++):

Разложение числа на простые множители (упрощенная). Зацикливание? - C++
Добрый вечер. Написал небольшой код для разложения небольших чисел на простые цифры. По умолчанию число, которое подается на ввод, делится...

Задачка про зацикливание при вводе не числа (решено но нужна консульт) - C++
Все решено ошибка найдена если есть идеи могут предложить лучший алгоритм int NumberOfElements=0; //глобальная переменная int...

Как определить зацикливание процесса? - C++
Собственно, сабж в названии. Как определить, что некоторая программа другого процесса зациклилась? Или, допустим, имея свой процесс и...

Зацикливание в меню, как исправить? - C++
Скажите что нужно изменить, чтобы при вызове из &quot;менюшки&quot;, функция не повторялась бесконечно. // #include &quot;StdAfx.h&quot; #include...

Вывести на экран сначала числа < 0, затем числа > 0 в порядке их ввода. Использовать очередь - C++
Ввести n целых чисел. Вывести на экран сначала числа &lt;0, затем числа &gt;0 в порядке их ввода. Использовать очередь. Пример: ввод: -2 3...

Как наиболее быстро определить зацикливание связанного списка? (a => b => c => d => e => a) - C++
You have a pointer to some element in a linked list (a =&gt; b =&gt; c =&gt; d =&gt; e). What is the fastest way to tell if there is a loop in the...

7
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
04.01.2012, 23:15 #2
Выпилить goto, очевидно.
0
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
04.01.2012, 23:17  [ТС] #3
goto нужно для повторного ввода. даже если убрать goto все равно вопрос останется как избежать зацикливание ввода не числа?
0
alkagolik
Заблокирован
04.01.2012, 23:19 #4
считать в символ и перевести в число
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
04.01.2012, 23:20 #5
goto не нужно практически никогда(по крайней мере, в плюсах). Используй while.
По вопросу: failbit
0
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
04.01.2012, 23:21  [ТС] #6
alkagolik, как именно?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
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, конечно желательно убрать
}
//...
1
romedal
54 / 54 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
05.01.2012, 00:04 #8
Цитата Сообщение от .Malek. Посмотреть сообщение
Как избежать зацикливание ввода не числа?
Через исключение...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2012, 00:04
Привет! Вот еще темы с ответами:

как избежать зацикливания - C++
Подскажите пожалуйста, как избежать зацикливания программы про вводе буквы вот в такой менюшке). Если я ввожу неправильную цифру...

Как избежать такую конструкцию? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; class Foo { public: Foo() { x = 0; }

Бесконечный цикл (как избежать?) - C++
Программа должна принимать только одно из трёх значений переменной 'destiny'. Если вводят любое другое значение, программа должна повторять...

Как избежать ошибок линковщика? - C++
Я только-только начал изучать С++(Borland). Взял первый попавшийся пример из helpa - printf #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
05.01.2012, 00:04
Ответ Создать тему
Опции темы

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