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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать чтобы switch работал для char?? 
:(
    Опции темы
corri
Дата 18.10.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача:
вводим комманду в консоли (чаровский массив\строку  слово кароче)
далее по введённой комманде вызывается функция или если нету такой комманды,то кричим что ввели неправильную комманду

Хотел сделать так:

Код

char kommand;
gets (kommand);
switch (kommand)
{
          case exit:
                       exit(); //функция закрытия консоли
          default:
                     cout<<"error command"; 

}


но в switch нельзя загонять строку...
есть у кого какие варианты????
PM MAIL   Вверх
Acer
Дата 18.10.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

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



представь char в виде int
PM MAIL   Вверх
zim22
Дата 18.10.2009, 12:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



используй std::map<string, int>


--------------------
PM MAIL   Вверх
Anikmar
Дата 18.10.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(corri @  18.10.2009,  12:38 Найти цитируемый пост)
Хотел сделать так:

...
Цитата(corri @  18.10.2009,  12:38 Найти цитируемый пост)
но в switch нельзя загонять строку...
есть у кого какие варианты???? 


Вы заставляете бедного пользователя каждый раз строку вводить для команды?


PM MAIL ICQ   Вверх
ИванМ
Дата 18.10.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(corri @  18.10.2009,  12:38 Найти цитируемый пост)
char kommand;

Вообще-то эта переменная - символ, а не строка.
PM MAIL   Вверх
Anikmar
Дата 18.10.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(ИванМ @  18.10.2009,  18:44 Найти цитируемый пост)
Вообще-то эта переменная - символ, а не строка. 

Я это не заметил. 

Дело в том, что топикстартер настойчиво хочет в switch запихать строку. Я пытаюсь выяснить откуда он ее хочет взять. 
В общем то все знают о чем речь, но хочется, чтобы топикстартер сам пришел к нужному решению с нашими подсказками. Правда подсказка 
Цитата(zim22 @  18.10.2009,  12:50 Найти цитируемый пост)
используй std::map<string, int> 

На мой взгляд выглядит пока слишком сложной (я не слишком жестко выразился?)  smile 

PM MAIL ICQ   Вверх
Alexeis
Дата 19.10.2009, 11:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Anikmar @  18.10.2009,  18:44 Найти цитируемый пост)
На мой взгляд выглядит пока слишком сложной (я не слишком жестко выразился?)  smile 

  Это самый реальный вариант. Поиск в сортированном массиве на логарифмическое время. Только для команд можно сделать еще лучше
чем std::map<string, int> . 
Сразу 
Код

map<string, [тип функции обработчика]> Map;


А вызывать таким образом
Код

(*Map->find(Command->Name)->second)([парметры обработчика команды])




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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