Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
aoeshka
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 19
1

Защита от дурака, на ввод "мусора" в int

21.05.2018, 15:52. Просмотров 514. Ответов 3
Метки нет (Все метки)

В общем, пытался сделать защиту на ввод неверного значения. Т.е чтобы вводилось значение не более 5 и не менее 1, и чтобы это было целое число и не символ.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i;
cout << "\n \t\tВвод разделителей \n";
do
{
    cout << "Введите кол-во разделителей (не более 5! ): ";
    cin >> i;
    while (cin.fail() == 1)
    {
          cout << "Ошибка. Введено нецелое число или символ!" << endl;
          cin.clear(); 
          cin.sync();
          cin >> i;
    }
} while (i > 5 || i < 1);
text.set_Symbol(i);
если число проходит проверку, оно отправляется в функцию text.set_Symbol(i);
но в итоге получил зацикливание сообщения "Ошибка. Введено нецелое число или символ!"
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2018, 15:52
Ответы с готовыми решениями:

Защита от дурака. Ввод данных типа int с клавиатуры.
Данные типа int вводятся с клавиатуры. нужно поставить защиту от дурака. Полазил на форуме нашёл...

Защита от дурака для консольного приложения "Калькулятор"
Здравствуйте. Написал простенький калькулятор с 4 действиями: &quot;+&quot;, &quot;-&quot;, &quot;*&quot;, &quot;/&quot;. #include...

"Защита от дурака" числа с плавающей запятой
Какие есть способы для защиты от ввода чисел с плавающей точкой(запятой) ?

"защита от дурака"
всем привет, нужна ваша помощь в реализации защиты от дурака) #include&lt;iostream&gt; #include&lt;locale&gt;...

"Защита от дурака"
Здравствуйте! Недавно начал изучать Си и столкнулся с проблемой. Как можно с помощью цикла...

3
nd2
3090 / 2587 / 1131
Регистрация: 29.01.2016
Сообщений: 8,674
21.05.2018, 15:58 2
Цитата Сообщение от aoeshka Посмотреть сообщение
C++
1
cin.sync();
Это не нужно использовать, не везде сработает. Замени на это:
C++
1
while (cin.get() != '\n');
0
aoeshka
0 / 0 / 0
Регистрация: 13.06.2015
Сообщений: 19
21.05.2018, 16:05  [ТС] 3
Сделал. При вводе символа зацикливается, а при вводе числа с точкой, если оно менее 5 и более 1, то ошибка вылетает. Но число все равно проходит проверку и отправляется в функцию
0
nd2
3090 / 2587 / 1131
Регистрация: 29.01.2016
Сообщений: 8,674
21.05.2018, 16:16 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int i;
    cout << "\n \t\tВвод разделителей \n";
    do
    {
        cout << "Введите кол-во разделителей (не более 5! ): ";
        while (!(cin >> i) || (cin.peek() != '\n'))
        {
            cout << "Ошибка. Введено нецелое число или символ!" << endl;
            cin.clear();
            while (cin.get() != '\n');
        }
    } while (i > 5 || i < 1);
    text.set_Symbol(i);
0
21.05.2018, 16:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2018, 16:16

"защита от дурака"
Пытаюсь сделать &quot;защиту от дурака&quot;... т.е введенная переменная должна быть только int.. не float...

Исправить ошибку C2664: fcvt: невозможно преобразовать параметр из "int" в "int *"
ПИшу програму перевод дробового числа с указанием количесв цифр после точки , с инт в чар !!!!Но...

Что делать с ошибкой: C2440: инициализация: невозможно преобразовать "int **" в "int *"
Задание, сделать класс динамического массива шаблонным. Вот, вроде бы сделал, но наткнулся на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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