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

Проверка на правильность ввода с клавиатуры - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 118, средняя оценка - 4.87
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
23.10.2012, 12:12     Проверка на правильность ввода с клавиатуры #1
Здравствуйте!
задача: пользователь вводит с клавиатуры цифру, нужно проверить что пользователь действительно ввел цифру, а не букву, знак или сочетание вышесказанного (db, 24d, 2k5)

вот на чем я остановился

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int n;
bool exit;
 
cin>>n;
exit=true;
while(exit){
    if((n>'a' || n<'Z')) {
           cout<<"ne verno vveli, povtorite vvod - \n";
               cin<<n;
           exit=true;
    }
    else {exit=false;}
}
я только сейчас начал понимать, что я проверяю не посимвольно, а целиком весь num
может кто то сталкивался?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 12:12     Проверка на правильность ввода с клавиатуры
Посмотрите здесь:

C++ проверка кода на правильность
Проверка на правильность ввода значения. C++
Проверка e-mail на правильность. C++
C++ Проверка на правильность кода
C++ Как контролировать правильность ввода?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2012, 16:44     Проверка на правильность ввода с клавиатуры #21
Цитата Сообщение от Nameless One Посмотреть сообщение
Попробуй просто нажать на Enter.
И что? Просто ждёт ввода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
24.10.2012, 16:51     Проверка на правильность ввода с клавиатуры #22
alsav22, а у меня зацикливается

Добавлено через 2 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
а у меня зацикливается
хотя нет, я ошибся, все нормально. Если не считать, что ввод типа "2 foo" будет считан нормально.

Добавлено через 3 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
Если не считать, что ввод типа "2 foo" будет считан нормально.
Ну и программа перестает реагировать на EOT
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2012, 17:04     Проверка на правильность ввода с клавиатуры #23
Цитата Сообщение от Nameless One Посмотреть сообщение
Если не считать, что ввод типа "2 foo" будет считан нормально.
Особенности работы cin>>.
Цитата Сообщение от Nameless One Посмотреть сообщение
Ну и программа перестает реагировать на EOT
Имеете ввиду EOF? Зачем, чтобы реагировала?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
24.10.2012, 17:12     Проверка на правильность ввода с клавиатуры #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Особенности работы cin>>.
Нет, тут cin работает так же, как и сишный scanf.

Цитата Сообщение от alsav22 Посмотреть сообщение
Имеете ввиду EOF? Зачем, чтобы реагировала?
Я имею в виду EOT. Затем, что если пользователь захочет отменить ввод, то программа должна на это корректно реагировать. Или возьмем другую ситуацию. Допустим ввод будет предоставляться не пользователем, а читаться из файла (через перенаправление потоков) либо из конвейера. Программа не сможет никак среагировать на то, что во входном потоке закончились данные.
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
24.10.2012, 17:40  [ТС]     Проверка на правильность ввода с клавиатуры #25
так будет правильно?
не намусорю?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    char junk;
    char name[40];
    unsigned int number;
    bool ok = false;
    while(!ok)
    {
        cout<<"Enter a number: ";
        gets(name);
        if(sscanf(name, "%d %c\n", &number, &junk) != 1) {
           cout<<"Incorrect input\n";
            ok=false;
        }
        else {ok = true;}
    }
    cout<<number<<"\n";
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.10.2012, 17:44     Проверка на правильность ввода с клавиатуры #26
Не мешайте ввод вывод Си и Си++
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
24.10.2012, 17:51  [ТС]     Проверка на правильность ввода с клавиатуры #27
Цитата Сообщение от Croessmah Посмотреть сообщение
Не мешайте ввод вывод Си и Си++
Дело в том, что я пишу на Си, а тему перенаправили в С++ Для меня это не столь важно, я пока не вижу разницы между Си и С++
Если писать на Си, я правильно делаю?
Заранее, спасибо.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
24.10.2012, 17:53     Проверка на правильность ввода с клавиатуры #28
Цитата Сообщение от Петр1 Посмотреть сообщение
Если писать на Си, я правильно делаю?
На Си Ваш код не скомпилируется, ибо cout это удел Си++
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
24.10.2012, 18:00  [ТС]     Проверка на правильность ввода с клавиатуры #29
Цитата Сообщение от Croessmah Посмотреть сообщение
На Си Ваш код не скомпилируется, ибо cout это удел Си++
я же говорю, что не вижу разницы.
Перенаправили правильно )
Мой код на С++ правильный? он работает и это точно.
По правилам он написан? ни где мусорить не будет?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
24.10.2012, 18:08     Проверка на правильность ввода с клавиатуры #30
Цитата Сообщение от Петр1 Посмотреть сообщение
По правилам он написан? ни где мусорить не будет?
С натяжкой можно сказать, что да. Но я бы все-таки остановился либо на С, либо на С++, и не смешивал эти языки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 18:11     Проверка на правильность ввода с клавиатуры
Еще ссылки по теме:

циклические алгоритмы (проверять правильность ввода данных) C++
C++ Правильность ввода даты
Ввод и проверка на правильность пароля C++

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

Или воспользуйтесь поиском по форуму:
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
24.10.2012, 18:11  [ТС]     Проверка на правильность ввода с клавиатуры #31
Цитата Сообщение от Nameless One Посмотреть сообщение
С натяжкой можно сказать, что да. Но я бы все-таки остановился либо на С, либо на С++, и не смешивал эти языки.
Спасибо за совет и ответ. Очень Вам благодарен.
Yandex
Объявления
24.10.2012, 18:11     Проверка на правильность ввода с клавиатуры
Ответ Создать тему
Опции темы

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