Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/79: Рейтинг темы: голосов - 79, средняя оценка - 4.65
50 / 4 / 0
Регистрация: 02.04.2011
Сообщений: 60
1

Ввод в консоле только чисел(запрет ввода других символов)

19.05.2011, 16:39. Показов 15099. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В консольном варианте с предложением пользователю ввести фразу, содержащую и цифры и буквы, чтоб потом программа после ввода исключала буквы и выводила строку состоящую только из чисел

у меня вот какая зарисовка только че то не работает, а точнее работает если строка содержит сначала ряд чисел а после нее идут буквы. Воможно я сделал ошибку (я так думаю), в том что при обнаружении в строке буквы, все последующие символы тоже обнуляются. Подскажите в чем я не прав.


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>
# include <cstdio>
# include <cstring>
using namespace std;
int main()
{
char *A; A=new char[20];
 
gets(A);
int a = strlen(A);
//cout << " \n"<< a ;
 
    for (int i=0; i<a;i++)
    {if (*(A+i)>'9')
    {*(A+i)=0x00;continue;}
    if (*(A+i)<'0')
    {*(A+i)=0x00;continue;}}
int c = strlen(A);
//cout << " \n"<< c ;
for (int t=0; t<c;t++)
cout << "\n" << *(A+t);
cin.get();
}
Может я не правильно заменяю символы может в *(A+i)=0x00; поставить что нибудь другое? Подскажите пожалуйста.

И второй вопрос как сделать так чтобы при вводе пользыватель не смог вводить буквы и другие символы.Слышал это можно реализовать по средствам функции getch. Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2011, 16:39
Ответы с готовыми решениями:

Запрет ввода символов в консоли
моя консольная программа имеет очень много вводов от пользователя, через контекстное меню (нажмите...

Запрет ввода символов в поле Edit
Как запретить нажатие и вставку из буфера всех символов, кроме нужных мне, к примеру разрешить...

Запрет ввода символов, отличных от цифр
Нужно заполнить двумерный массив только числами. Как это реализовать?

Запрет ввода любых символов кроме цифр в консоли
Ребята подскажите пожалуйста можно ли как-то разрешать ввод в консоль только цифр. Я делаю проверку...

26
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.05.2011, 15:58 21
Author24 — интернет-сервис помощи студентам
Hotbed, И вот на кой здесь юзать define...
0
50 / 4 / 0
Регистрация: 02.04.2011
Сообщений: 60
22.05.2011, 16:07  [ТС] 22
ForEveR,
А чем это отличается # define k 80 от const int k=80 ; ? Тем что здесь 1 это С а 2 это с++
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.05.2011, 16:40 23
Hotbed, Тем что первое это макрос. У него нет типа. Он не знает о простраствах имен. И прочие плохие вещи. А второе - константа определенного типа.
0
50 / 4 / 0
Регистрация: 02.04.2011
Сообщений: 60
22.05.2011, 16:55  [ТС] 24
ForEveR, А как допустим задать константу (при необходимости ее использования в Си ) не используя #define ? Конечно делаю больший уклон при изучении на C++, но все таки надо знать ведь Си основа С++. И при учебе в ВУЗе (в будущем) может пригодится знание синтаксиса Си
А почему о using namespace
Он не знает о простраствах имен. И прочие плохие вещи.
Вы отзываетесь так? Чем плохо его использование? При написании кода Вы его я заметил не используете почему?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
22.05.2011, 17:01 25
Цитата Сообщение от Hotbed Посмотреть сообщение
А как допустим задать константу (при необходимости ее использования в Си ) не используя #define ?
Есть такая вещь, называется "финт с перечислением" (даже есть аналогичный английский термин).
C
1
2
enum{myconstant=10};
int arrray[myconstant];
По одному из источников он (финт) родился когда в классах еще нельзя было использовать статичные константы, и программеры придумали такой вот хитрый ход))
2
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.05.2011, 17:02 26
Hotbed, Я просто не люблю явное использование using namespace. Хотя иногда использую. Но не std.

А #define пофигу на пространства имен. Абсолютно.
1
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.05.2011, 22:29 27
Hotbed, пространства имен придумали, не для того что бы программисту надо было каждый раз писать using namespace, да еще и глобально.

Добавлено через 1 минуту
#define это жуть полнейшая, которая портит весь язык c++, но от которой никуда пока не деться. Будем надеяться на стандарт 2x.
0
22.05.2011, 22:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2011, 22:29
Помогаю со студенческими работами здесь

Ограничение на ввод символов (разрешить ввод только цифр)
Всем доброго времени суток! Я начал изучать С++ и у меня возник такой вопрос: Как ограничить...

Запрет ввода чисел
необходимо в калькуляторе сделать запрет ввода числа, через кеу не получается.вот полный код...

Запрет ввода только минуса в ячейке StringGrid, и запрет на ввод минуса между цифрами
Ребята,очень нужна ваша помощь!Нужно сделать запрет ввода ТОЛЬКО минуса в ячейке и запрет на ввод...

Ввод только определенных символов, удаление запрещенных символов из ячейки ввода
Добрый вечер! Подскажите, пожалуйста, как можно такое реализовать посредством jQuery. Вот форма: ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru