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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
#1

Проверка ввода - C++

09.03.2010, 21:44. Просмотров 4150. Ответов 37
Метки нет (Все метки)

Как ограничить ввод символов в программе!!!! На каждый символ, который был введен выдавать сообщение о неправильном вводе????? Надо чтоб можна было ввести только цифры???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 21:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка ввода (C++):

Visual C++ проверка ввода на число, проверка на кирилицу - C++
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. Этот код проверяет на буквы и знаки,...

Проверка ввода - C++
Всем привет. Прошу обясните мне как зделать проверку вводимых даных. Мне нужно к примеру задать числовой масив типа (int). Как зделать так...

Проверка ввода - C++
Доброго вам времени суток. Бывалые, подскажите неопытному, как лучше писать? И если несложно, то скажите почему. for(;;) { ...

gets() проверка ввода - C++
возникло слабое звено в программке ... max_length = 100; line = new char; ... gets(line); ... вопрос такой: как...

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

Проверка ввода - C++
Как можно проверить вводимые данные, являются ли они числом. Допустим если ввели "08098рррр9" - запросить повторный ввод, а если "43543"...

37
smithy69
17 / 16 / 1
Регистрация: 06.11.2009
Сообщений: 167
09.03.2010, 21:53 #2
если ввод по символьный, то просто цикл до какого то числа,а в теле цикла read, потом символ сравниваешь, например simvol>'0' && simvol<'9'. На счёт границ не уверен, посмотри ASCII таблицу.
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 22:55  [ТС] #3
Никак непойму с условиям!!!
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
09.03.2010, 23:00 #4
Цитата Сообщение от MILAN Посмотреть сообщение
На каждый символ, который был введен выдавать сообщение о неправильном вводе????? Надо чтоб можна было ввести только цифры???
это вопросы?)
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 23:02  [ТС] #5
Как ограничить ввод символов в программе??? На каждый символ, который был введен выдавать сообщение о неправильном вводе. Надо, чтоб можна было ввести только цифры!!!!!
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
09.03.2010, 23:08 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    while (true){
        switch (getch()){
            case '1':
            cout<<"1";
            break;
            case '2':
            cout<<"2";
            break;
            default:
            cout<<"error symbol";
            break;
        }
    }
также пишеш и про цифры 3 4 5 6 7 8 9 0
0
smithy69
17 / 16 / 1
Регистрация: 06.11.2009
Сообщений: 167
09.03.2010, 23:20 #7
ну смотри, вводишь символ цифру, в таблице ASCII код который соответсвует цифрам так же упорядочен, то есть 0 соответствует 48, 1 - 49 и так далее. то есть simvol>='0' означает, что мы берем код символа simvol и сравниваем с кодом '0', то есть берём цифры больше 0, и так же simvol<=9, и эти два условия объединяем && - истино только тогда когда истинны оба. то есть если мы введём не цифру, то код символа не будет входить в наш промежуток, ну и можешь вывести оповещение какое нибудь

Добавлено через 1 минуту
to PointsEqual

C++
1
while(true)
хорошее ограничение
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
09.03.2010, 23:21 #8
Цитата Сообщение от smithy69 Посмотреть сообщение
ну смотри, вводишь символ цифру, в таблице ASCII код который соответсвует цифрам так же упорядочен, то есть 0 соответствует 48, 1 - 49 и так далее. то есть simvol>='0' означает, что мы берем код символа simvol и сравниваем с кодом '0', то есть берём цифры больше 0, и так же simvol<=9, и эти два условия объединяем && - истино только тогда когда истинны оба. то есть если мы введём не цифру, то код символа не будет входить в наш промежуток, ну и можешь вывести оповещение какое нибудь
как то сложно

Добавлено через 21 секунду
Цитата Сообщение от smithy69 Посмотреть сообщение
while(true)
это просто пример
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 23:21  [ТС] #9
А через ASCII - код можна сделать???
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
09.03.2010, 23:25 #10
Цитата Сообщение от MILAN Посмотреть сообщение
А через ASCII - код можна сделать???
можно все. только это запутаннее
0
smithy69
17 / 16 / 1
Регистрация: 06.11.2009
Сообщений: 167
09.03.2010, 23:25 #11
C++
1
2
3
4
5
6
if ((simvol>='0')&&(simvol<='9')) {
                                                   //то что нужно сделать, если всё ок
                                                  }
  else {
          //то что нужно сделать если не цифра
         }
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 23:30  [ТС] #12
Дело в том, что у меня есть число, я его розбиваю на цифры, и отдельно, в цикле, каждую цифру проверяю, попадает ли она в условие!!! Только вот когда в числе встречается символ.....
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
09.03.2010, 23:43 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>
 
bool isNum(const std::string& buf){
    for ( std::string::const_iterator i = buf.begin(); i != buf.end(); ++i )
        if ( !isdigit(*i) )
            return false;
    return true;
}
 
int main(){
    std::string buf;
    
    while ( true ) {
        std::cout << "Number (empty - exit): ";
        std::getline(std::cin, buf);
        if ( buf.empty() )
            break;
        if ( !isNum(buf) )
            std::cout << "Oh, no! It is not a number!" << std::endl;
        else
            std::cout << "Oh, yeah! It is a number " <<  atoi(buf.c_str()) << std::endl;
    }
    
    exit(0);
}
1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
09.03.2010, 23:48 #14
easybudda, я смотрю ты оч хорошо стандартной библиотекой пользуешся) что не сообщение то stl
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
09.03.2010, 23:55 #15
Цитата Сообщение от PointsEqual Посмотреть сообщение
что не сообщение то stl
а так и проще, и короче
0
09.03.2010, 23:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 23:55
Привет! Вот еще темы с ответами:

C++ проверка ввода - C++
Ребят помогить пожалуста разобраться не работает чертова проверка ввода я в коментарии вынес текст ошибки гляньте ... // laba1.cpp:...

Проверка правильности ввода - C++
Доброго времени суток. Как, в приведенном ниже коде, сделать так, что бы при вводе отрицательного числа выводилось не &quot;сколько минут вы...

Проверка языка ввода - C++
Вот часть кода. Что мне прописать в if, чтобы проверить условие. Если выбрана кириллица на клавиатуре, то писать эти буквы. Если другая, то...

Проверка ввода данных - C++
Задача 1 такая: &quot;Введите 1, для вычисления среднего арифметического, введите 2, для вычисления среднего геометрического&quot;. Решил я её так,...


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

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

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