Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Римские цифры - как сделать фильтрацию ввода 
:(
    Опции темы
KorroK
Дата 23.12.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



Требуется сделать так, чтобы можно было ввести только римские цифры.
Есть идея сделать посимвольный ввод с проверкой, вроде

char r;
do 
{    r = _getch();
    if (r == 'X' ||
        r == 'V' ||
        r == 'I')
// и т.д.    

{    std::cout << r;
    }
} while(r != 13);

Споткнулся на том, как:
- веденые символы сливать в одну строку 
- если вводится в нижнем регистре  переводить в верхний
- как задействовать редактирование при вводе (Back Spaсe, например) 

PM MAIL   Вверх
Dmi3ev
Дата 23.12.2008, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Код

string s;
char r;
do
{r=toupper(getch());
 if (r == 'X' ||
     r == 'V' ||
     r == 'I')
// è ò.ä.

{    std::cout << r; s+=r;
    }
} while(r != 13);
cout<<endl<<"s="<<s;

вот так можно


--------------------

PM MAIL   Вверх
KorroK
Дата 23.12.2008, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



Спасибо, получилось
А редактировать строку ввода ка-то можно?

Это сообщение отредактировал(а) KorroK - 23.12.2008, 01:35
PM MAIL   Вверх
Dmi3ev
Дата 23.12.2008, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



KorroK, ну ты сам смотри, ты нажимаешь enter для подтверждения ввода, как тут отредактируешь, редактировать можно пока enter не нажал, а так потом уже после ввода можно сделать редактирование... а так сам посуди... переменная уже десять раз изменилась, записалась в строку, а ты ее менять собрался... 
как ты это представляешь???
объясни????



--------------------

PM MAIL   Вверх
KorroK
Дата 23.12.2008, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



да, пожалуй, в консоли никак
чет я туплю )
PM MAIL   Вверх
Dmi3ev
Дата 23.12.2008, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



да нет, можно везде сделать что угодно...
только нужна идея...
я допустим не представляю...
а ты, может, видишь ясно как это делать... только не знаешь как реализовать...
но видно ты тоже не видишь... так что редактируй дальше в проге... вот выход...


--------------------

PM MAIL   Вверх
SkyCoder
Дата 24.12.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичёк
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 26.6.2006
Где: 3-я планета от со лнца

Репутация: нет
Всего: нет



Когда только учился, я на подобное заморачивался.  Редактирование самостоятельно делается без проблемм, если делать на потоках с помощью getch и getchar. Иной вариант изучи  printf() scanf().
Если делаешь с помощью гетчар и и гетчш смотри.

гетчар и гетчш читают ОДИН символ из потока ввода программы.Знал.

Каждая клавиша имеет свой код который отсылается в поток ввода программы. Знаешь.

Функциональные клавиши и русские буквы отсылаются в поток ввода двумя символами. нулём(не путать с символом '0'==48) и собственно кодом. Знаешь.

Что бы узнать коды клавиш, напиши софтину, которая выводила бы поток ввода, посимвольно, при том сам символ и его код.

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

Запомнился пример - что бы стереть один символ из консоли выводишь строку "\b \b" (бэкспейс, пробел,бэкспейс)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.