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

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

Восстановить пароль Регистрация
 
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 18:59     Посторонний символ = краш #1
В общем, есть цикл:

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

Вопрос: как исключить ввод любого другого символа (буквы) с клавиатуры, то бишь, чтобы так же программа попросила ввести текст еще раз? Долго голову ломал, в итоге - только провальные идеи.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
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);
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 20:31  [ТС]     Посторонний символ = краш #4
Ошибочка, не "бесконечный символ", а "бесконечный цикл".
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
25.02.2014, 20:34     Посторонний символ = краш #5
Цитата Сообщение от EragonJKee Посмотреть сообщение
Ошибочка, не "бесконечный символ", а "бесконечный цикл".

Не по теме:

Да мы поняли

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

А, я кажется понял, но вы посмотрите на что конкретно я отвечал. Я избавил программу от зацикливания, а не добавил фильтрацию для цифр. Фильтрацию для цифр сделал Amandosov, не вижу смысла повторять ответ еще раз
Я думал вам неплохо было бы знать почему это происходило.
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 21:10  [ТС]     Посторонний символ = краш #9
Amandosov, я понял, спасибо.
DrOffset, с этой функцией я разобрался, спасибо
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);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 21:53     Посторонний символ = краш
Еще ссылки по теме:

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_» C++
C++ Краш программы после вызова Inverse_element
C++ Краш на моменте vector.push_back()

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

Или воспользуйтесь поиском по форуму:
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
25.02.2014, 21:53  [ТС]     Посторонний символ = краш #11
Я потом впиливаю это в switch, а там числа от 1 до 5 на данный момент, но по мере обновления программы - будет больше.
Yandex
Объявления
25.02.2014, 21:53     Посторонний символ = краш
Ответ Создать тему
Опции темы

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