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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.98
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
#1

Ограничение ввода символов. - C++

15.04.2011, 16:16. Просмотров 8687. Ответов 29
Метки нет (Все метки)

Здравствуйте, подскажите пожалуйста как ограничеть ввод символолв в программе с помощью кода.
Тоесть, например я хочу чтобы в данной программе можно было вводить только цифры
и символы(+;-=.,! и тд), а буквы просто бы не вводились(или наоборот, только буквы и символы).

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

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

Ограничение ввода арифметических символов - C++
сам код #include <iostream> #include <locale> using namespace std; int main() { setlocale(LC_ALL, "rus"); unsigned char...

Ограничение ввода.(цифр, букв и символов) - C++
Мне нужно сделать ограничение ввода. Условие: 1) ввод 1, 2 или 3, если больше, то сообщение об ошибке и повторный ввод, также с...

Ограничение ввода(цифр, букв и символов) - C++
Здравствуйте ! Мне нужно сделать ограничение ввода. Я его прописал, для ввода длины и количества паролей, но не могу для ввода куда...

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

Ограничение ввода с клавиатуры - C++
Доброго времени суток. Ребят такой вопрос: Как ограничить ввод данных с клавиатуры. Если точнее: прдставте себе что юзер заснул на...

29
IrineK
Заблокирован
15.04.2011, 16:23 #2
Точнее, вводиться будет все, а вот выводиться (на экран или в файл) будет уже через фильтр?
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 16:41  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
#include <cmath>
int main()
{
while(true){
    double cover;
    cout << "Enter a number: ";
    cin >> cover;
    double stpn;
    cout << "Enter a degree: ";
    cin >> stpn;
    double answer = pow(cover, stpn);
 
    cout << endl << "Number is: " << answer << endl;
    cout << endl;
    system("pause");
    cout << endl << endl << endl;
  
 
}
    return 0;
}
Например когда вот эта програмка открываеться туда можно чо хочешь ввести например букву а,
а я хочу чтобы вобще нельзя было вводить буквы просто чтобы они не вводились.

Добавлено через 1 минуту
я прост совсем недавно начал изучать это

Добавлено через 5 минут
Или как-нибудь это через if можно сделать чтобы например когда букву вводишь там ошибку например писала.
0
IrineK
Заблокирован
15.04.2011, 16:57 #4
Все-таки, вы хотите, чтобы буквы не выводились.

Заставить пользователя обходить стороной клавиши при вводе можно физически: подводя вольт 50 к запретным клавишам.
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 17:16  [ТС] #5
А какнибуть можно сделать через if чтобы программа писала ошибку на ввод букв а не глючила?

C++
1
2
3
4
5
6
7
...
if(условие: если я пишу букву, а не цифру или символ)
{
cout << "\n\aError!\n\n";
cout << endl << endl;
}
...
какнибудь так нельзя?

Добавлено через 12 минут
Или как-нибудь ещё, просто чтобы не глючила если букву ввёл и ненадо было второй раз открывать.
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
15.04.2011, 17:24 #6
Попробуй так:
C++
1
2
3
4
i=cin.rdstate();
    if (i & ios::failbit){
        cerr<<str<<"\n";
    }
P.S. На форуме рассматривались такие темв - видишь наверху пункт "Поиск по теме" - отлично ищет, сама пользовалась
1
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 483
15.04.2011, 17:27 #7
Naglus, если с if смотри в сторону цикла do while
и ставишь условие пока пользователь не ввел то что нужно, он не выйдет из цикла и будет вывод ошибки.
1
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
15.04.2011, 17:30 #8
Можно еще так:
C++
1
if (x<-50 || x>=50)
Тоже работает
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 17:58  [ТС] #9
Простите пожалуйст, я непонял что мне надо сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
while(true){
    double q;
    double w;
    cin >> q;
    cin >> w;
    double e = q + w;
    cout << endl << e << endl;
    system("pause");
    cout << endl;
}
return 0;
}
вот эта программка например, если я ввожу буквы она глючит и не обновляеться.
Пожалуйста напишите в ней что конкретно нунжно сделать, я просто дуб какой-то, непонимаю.

Добавлено через 2 минуты
если пишу
C++
1
if (x<-50 || x>=50)
у меня вобще действие не выполняеться.
0
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 483
15.04.2011, 18:03 #10
C++
1
2
3
4
5
6
do
{
  printf ("\nВведите кол-во элементов массива n (n<=50): ");
  scanf ("%d",&n);
  }
while (n>max);
вот пример бесконечного ввода пока ты не введешь число меньше 50.
А по буквам тогда уж смотри по ASCII коду
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 18:22  [ТС] #11
C++
1
2
3
4
5
6
do
{
  printf ("\nВведите кол-во элементов массива n (n<=50): ");
  scanf ("%d",&n);
  }
while (n>max);
Это должно находиться в функции инт майн или где?
я непонимаю.
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
15.04.2011, 18:27 #12
Получилось?
Смотри как можно
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
29
#include <iostream>
using namespace std;
int main()
{
    int i;
    double q;
    double w;
        double e;
while(true){
 
    cin >> q;
        i=cin.rdstate();
        if (i & ios::failbit){
                cerr<<"Incorect simbol"<<"\n";
                                break;
        }
                cin >> w;
        i=cin.rdstate();
        if (i & ios::failbit){
                cerr<<"Incorect simbol"<<"\n";
                                break;
        }
     e = q + w;
    cout << endl << e << endl;
    system("pause");
    cout << endl;
}
return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Naglus Посмотреть сообщение
если пишу
Код C++1 if (x<-50 || x>=50)
у меня вобще действие не выполняеться.
Я для целых использовала, может поэтому не получаеться?

Добавлено через 2 минуты
Цитата Сообщение от Naglus Посмотреть сообщение
do
{
printf ("\nВведите кол-во элементов массива n (n<=50): ");
scanf ("%d",&n);
}
while (n>max);
Это должно находиться в функции инт майн или где?
я непонимаю.
) Да, в ней


P.S. Советую книжку Павловской "с/С++ Программирование на языках высокого уровня", там все понятно написано
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 18:29  [ТС] #13
Да, спасибо большое!
Если ввожу букву то программа просто вылетает.

(Прости пожалуйста за вопрос. Ты немогла бы вкратце обьяснить что есть что из:
C++
1
2
3
4
        if (i & ios::failbit){
                cerr<<"Incorect simbol"<<"\n";
                                                                break;
}
?
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,022
15.04.2011, 18:39 #14
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
29
30
#include <iostream>
using namespace std;
int main()
{
        int i;
    double q;
    double w;
                double e;
while(true){
 
    cin >> q;
                i=cin.rdstate();                 //Проверяет состояние потока ввода
        if (i & ios::failbit){                      //если введен символ неверного формата
                cerr<<"Incorect simbol"<<"\n";//выводить сообщение об ошибке
                                                                break;//выходим из цикла
        }
                                cin >> w;
                i=cin.rdstate();
        if (i & ios::failbit){
                cerr<<"Incorect simbol"<<"\n";
                                                                break;
        }
     e = q + w;
    cout << endl << e << endl;
    system("pause");
    cout << endl;
}
 system("pause");
return 0;
}
Ты же из цикла выходишь, значит нужно system("pause"); вынести
1
Naglus
3 / 3 / 0
Регистрация: 04.04.2011
Сообщений: 40
15.04.2011, 18:57  [ТС] #15
а как сделать чтобы после того как пишешь неверный символ не вылетало а программа продолжалась?

я попробовал поставить гоуту:
C++
1
2
3
4
5
}
    system("pause");
goto mrp;
return 0;
}
но приетом он начинает бесконечно повторять ошибку, только уже пишет что это ошибка, а не 190433232е028.
0
15.04.2011, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2011, 18:57
Привет! Вот еще темы с ответами:

Ограничение ввода! Подскажите! - C++
Подскажите как ограничить ввод для значений a и b? нужны только числа совершенно в этом не шарю..

Ограничение времени ввода. - C++
нада дать юзеру 10 сек на ввод значения Х. Еси он провтыкал 10 сек, то стандартно Х = 0. в худшем случае дать возможность 10 секунд...

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами - C++
Порядок выполнения работы 1.Изучите теоретическое обоснование и проанализируйте приведенные выше примеры программ с циклами типа for,...


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

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

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