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

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

Войти
Регистрация
Восстановить пароль
 
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
#1

Посторонний символ = краш - C++

25.02.2014, 18:59. Просмотров 337. Ответов 10
Метки нет (Все метки)

В общем, есть цикл:

C++
1
2
3
4
5
6
do {
 
cout << "Текст: ";
cin >> a;
 
} while (a < 1 || a > 3);
Я думаю, что всем понятно, что делает код: вводишь число меньше 1 или число большее, чем 3, то программа зацикливается и просит ввести текст еще раз, прежде, чем пойти дальше. Но вот беда, вводишь в консоль любой другой символ - программа начинает выдавать бесконечный символ.

Вопрос: как исключить ввод любого другого символа (буквы) с клавиатуры, то бишь, чтобы так же программа попросила ввести текст еще раз? Долго голову ломал, в итоге - только провальные идеи.
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2014, 18:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посторонний символ = краш (C++):

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» - C++
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Краш программы - C++
Добрый день, такой вопрос, почему крашится программа если обращаюсь таким образом к последнему символу строки а не...

Краш программы - C++
Из за чего крашит мою программу в 1 запросе я ввожу: C:\test.. во 2 запросе я ввожу: C:\test.txt #include &lt;string&gt; ...

Краш программы - C++
Хелп! Программа крашится после ввода значения. #include&lt;iostream&gt; #include&lt;vector&gt; int tower(int); int main() { int disc; ...

Ошибка и краш компилятора - C++
Здраствуйте. Пытаюсь скомпилировать скачанный проект с boost`ом, при компиляции появляется окно &quot;Прекращена работа программы...

Краш на моменте vector.push_back() - C++
Доброго времени суток. Начну с короткого объяснения кода: программа считывает файл строчка за строчкой ( в строке ровно 1 слово и 1...

10
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
25.02.2014, 19:29 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
char buf;
do {
 
cout << "Текст: ";
cin >> buf;
 
} while (buf < '1' || buf > '3');
a=int(buf)-48;
1
DrOffset
7313 / 4413 / 999
Регистрация: 30.01.2014
Сообщений: 7,247
25.02.2014, 20:07 #3
Цитата Сообщение от EragonJKee Посмотреть сообщение
программа начинает выдавать бесконечный символ
C++
1
2
3
4
5
6
do {
    std::cout << "Текст: ";
    std::cin >> a;
    std::cin.ignore();
 
} while (a < 1 || a > 3);
1
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 20:31  [ТС] #4
Ошибочка, не "бесконечный символ", а "бесконечный цикл".
0
DrOffset
7313 / 4413 / 999
Регистрация: 30.01.2014
Сообщений: 7,247
25.02.2014, 20:34 #5
Цитата Сообщение от EragonJKee Посмотреть сообщение
Ошибочка, не "бесконечный символ", а "бесконечный цикл".

Не по теме:

Да мы поняли

0
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 20:39  [ТС] #6
DrOffset, ваш не сработал.
Amandosov, ваш сработал, но теперь выводит столько повторных строчек, из скольки символов состоит введенное слово.
0
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
25.02.2014, 20:51 #7
EragonJKee,
каждый символ слово присваивается в buf и проверяется отдельно
0
DrOffset
7313 / 4413 / 999
Регистрация: 30.01.2014
Сообщений: 7,247
25.02.2014, 21:06 #8
Цитата Сообщение от EragonJKee Посмотреть сообщение
ваш не сработал.
Что значит не сработал? Покажите код, который компилировали.

А, я кажется понял, но вы посмотрите на что конкретно я отвечал. Я избавил программу от зацикливания, а не добавил фильтрацию для цифр. Фильтрацию для цифр сделал Amandosov, не вижу смысла повторять ответ еще раз
Я думал вам неплохо было бы знать почему это происходило.
0
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 21:10  [ТС] #9
Amandosov, я понял, спасибо.
DrOffset, с этой функцией я разобрался, спасибо
0
Xerotico
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 14
25.02.2014, 21:43 #10
Можно задачу подробнее? Вводимое число (от 1 до 3) это int?

Добавлено через 4 минуты
Могут быть отрицательными или больше 10?

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
char a;
        do {
 
        cout << "Г’ГҐГЄГ±ГІ: ";
        cin >> a;
 
           } while (a!='2');
           Sleep(1000);
0
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 21:53  [ТС] #11
Я потом впиливаю это в switch, а там числа от 1 до 5 на данный момент, но по мере обновления программы - будет больше.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 21:53
Привет! Вот еще темы с ответами:

Краш программы. Поиск по структуре - C++
Доброго времени суток, уважаемые форумчане! Я столкнулся с такой проблемой... Условие задачи : В записной книжке указаны фамилии и...

Краш во время вывода списка на экран - C++
Имеется некоторый код (код трохи по-калечному написан, не важно). Суть в том, что он выкидывает необработанное исключение после запуска при...

Краш программы после вызова Inverse_element - C++
#include&lt;iostream&gt; #include&lt;math.h&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int b_fr; char bigramm; int...

Краш программы при работе с tinyxml2 - C++
Привет всем. Использую tinyxml2, пытаюсь из этого xml документа: &lt;response list=&quot;true&quot;&gt; &lt;user&gt; &lt;id&gt;12345678&lt;/id&gt; ...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
25.02.2014, 21:53
Ответ Создать тему
Опции темы

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