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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.79
Hotbed
 Аватар для Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 55
#1

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

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

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

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


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. Заранее благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 16:39     Ввод в консоле только чисел(запрет ввода других символов)
Посмотрите здесь:

C++ Запрет ввода любых символов кроме цифр в консоли
C++ Запрет ввода символов в поле Edit
Написать защиту от ввода чисел с плавающей точкой, отрицательных чисел и символов C++
C++ Запрет ввода символов в консоли
Проверка ввода данных в консоле C++
C++ Проверка правильности ввода. Запретить ввод чисел
C++ Скрыть ввод в консоле ввод записи?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.05.2011, 15:58     Ввод в консоле только чисел(запрет ввода других символов) #21
Hotbed, И вот на кой здесь юзать define...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hotbed
 Аватар для Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 55
22.05.2011, 16:07  [ТС]     Ввод в консоле только чисел(запрет ввода других символов) #22
ForEveR,
А чем это отличается # define k 80 от const int k=80 ; ? Тем что здесь 1 это С а 2 это с++
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.05.2011, 16:40     Ввод в консоле только чисел(запрет ввода других символов) #23
Hotbed, Тем что первое это макрос. У него нет типа. Он не знает о простраствах имен. И прочие плохие вещи. А второе - константа определенного типа.
Hotbed
 Аватар для Hotbed
48 / 2 / 1
Регистрация: 02.04.2011
Сообщений: 55
22.05.2011, 16:55  [ТС]     Ввод в консоле только чисел(запрет ввода других символов) #24
ForEveR, А как допустим задать константу (при необходимости ее использования в Си ) не используя #define ? Конечно делаю больший уклон при изучении на C++, но все таки надо знать ведь Си основа С++. И при учебе в ВУЗе (в будущем) может пригодится знание синтаксиса Си
А почему о using namespace
Он не знает о простраствах имен. И прочие плохие вещи.
Вы отзываетесь так? Чем плохо его использование? При написании кода Вы его я заметил не используете почему?
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
22.05.2011, 17:01     Ввод в консоле только чисел(запрет ввода других символов) #25
Цитата Сообщение от Hotbed Посмотреть сообщение
А как допустим задать константу (при необходимости ее использования в Си ) не используя #define ?
Есть такая вещь, называется "финт с перечислением" (даже есть аналогичный английский термин).
C
1
2
enum{myconstant=10};
int arrray[myconstant];
По одному из источников он (финт) родился когда в классах еще нельзя было использовать статичные константы, и программеры придумали такой вот хитрый ход))
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.05.2011, 17:02     Ввод в консоле только чисел(запрет ввода других символов) #26
Hotbed, Я просто не люблю явное использование using namespace. Хотя иногда использую. Но не std.

А #define пофигу на пространства имен. Абсолютно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 22:29     Ввод в консоле только чисел(запрет ввода других символов)
Еще ссылки по теме:

C++ Запрет ввода символов, отличных от цифр
C++ C++. Ввод, вывод (в консоле)
Запрет ввода чисел C++
C++ Ограничение на ввод символов (разрешить ввод только цифр)
C++ В одномерном массиве подсчитать количество положительных чисел, отрицательных чисел и других символов

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

Или воспользуйтесь поиском по форуму:
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
22.05.2011, 22:29     Ввод в консоле только чисел(запрет ввода других символов) #27
Hotbed, пространства имен придумали, не для того что бы программисту надо было каждый раз писать using namespace, да еще и глобально.

Добавлено через 1 минуту
#define это жуть полнейшая, которая портит весь язык c++, но от которой никуда пока не деться. Будем надеяться на стандарт 2x.
Yandex
Объявления
22.05.2011, 22:29     Ввод в консоле только чисел(запрет ввода других символов)
Ответ Создать тему
Опции темы

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