46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
1 | ||||||
Использование текстовой/длинной переменной для switch19.09.2013, 11:22. Показов 3070. Ответов 18
Метки нет (Все метки)
добрый день!
Такой вот вопрос: есть цикл switch-case, но нужно, чтобы пользователь вводил команды, например: hepl и exit. Как мне сделать, чтобы case проверял именно слова? *если использовать enum, то как осуществить ввод слова?
опечатку со свитчем исправила, там была другая переменная.
0
|
19.09.2013, 11:22 | |
Ответы с готовыми решениями:
18
Использование строк для оператора switch Ошибка «использование локальной переменной которой не присвоено значениe» внутри switch Switch . Как присвоить переменной значение из Switch в default Как поменять значение числовой переменной в зависимости от значения текстовой переменной Изменение значения переменной, название которой находится в текстовой переменной |
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
|
|
19.09.2013, 11:29 | 2 |
Command должен иметь целочисленный тип: http://msdn.microsoft.com/ru-r... 5wee3.aspx
Где-нибудь раньше присваивай Command значение, например если ввёл пользователь help, то присваиваешь 1 command, если exit то 2 и далее в switch описываешь, что нужно делать при command =1 и 2.
0
|
9 / 8 / 2
Регистрация: 02.05.2012
Сообщений: 92
|
|
19.09.2013, 11:29 | 3 |
используй string в качестве переменной command и проверяй как сделал
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
||||||
19.09.2013, 12:08 | 4 | |||||
Пример использования char в switch:
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|||||||||||
19.09.2013, 12:35 | 6 | ||||||||||
Nullik, enum и string можно связать через мапу
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
20.09.2013, 08:18 [ТС] | 7 | |||||
I.M., попробую ваш метод сейчас разобрать (нагуглить примеров)
Пример es_ неплохой, но хотелось бы как-то выпендриться что-ли и сделать типа "ключевые слов", т.е., именно слов, а не символов. Вариант Nerock работает в С11, или как эта версия называется -- на хабре видела, НО у меня вижуалка это точно не делает, пример был там, проверила, нифига. Так что, этот вариант не катит. А идея SatanaXIII не совсем подходит, потому что в комменте программы я написала (может быть там далеко уехало, но всё же): а если будут ещё с "слова" с того же символа, как быть тогда? Воооооот, хотелось бы сразу словами. Поэтому, будем изучать мар. Добавлено через 28 минут Подскажите, что я сделал не так, и правильно ли я сделала вообще, потому что код работает, но где-то циклится *сейчас ещё выясню где*
ахаха, всё, ошибку нашла! Кавычки лишние поставила. Спасибо за помощь!!!!!!
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
20.09.2013, 11:09 | 8 |
Кажется я помню эту статью. В с++11 не добавляли возможность делать свитч по строке. В той статье используется хеш строки, который подставляется вместо нее на этапе компиляции. Самопал, короче говоря)
0
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
20.09.2013, 12:25 [ТС] | 9 | |||||
I.M. , если вам не сложно, ещё раз:
мар - это абстрактный контейнер, типа хэш таблицы, "ключ-значение", где ключи уникальны. enum - перечисляем (???)
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
||||||
20.09.2013, 12:36 | 10 | |||||
words.at(aa); - тут из мапы по ключу вытаскивается значение
и свитч надо не так писать
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
20.09.2013, 12:43 [ТС] | 11 | |||||
ааааа
А вот ещё, допустим, если я буду писать так, как Вы говорите, то не будет ли такой ошибки: когда ввели не help, а hlep -- вылетать? В таком коде, что выше, вылетает, если ввести другое слово. Добавлено через 4 минуты *неа, я написала так, как вы сказали, ввела hlep и вылетела "ошибка", а если случайно не ошибиться, то всё работает. Как бы вот это сделать, что если не элемент (ключ) mар, то идём дальше? итоговый код у меня такой:
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
20.09.2013, 13:57 | 12 |
Думаю, рано рассказывать про exception и try-catch блоки) поэтому другой вариант, самый простой, на мой взгляд
вызывать words.count(aa); метод вернет 1, если слово есть в мапе и 0, если слова там нет про другие методы мапы можно посмотреть, например, тут http://en.cppreference.com/w/cpp/container/map
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
20.09.2013, 14:37 [ТС] | 13 | |||||
рассказывайте, мне С++ ещё долго изучать
т.е.:
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
||||||
20.09.2013, 14:43 | 14 | |||||
не совсем так
1
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
20.09.2013, 19:08 [ТС] | 15 |
аааа, т.е. не вложенные, а последовательные ду-ду. Ааа! Спасибо!
Добавлено через 4 часа 16 минут теперь у меня случилась проблема: когда я ввожу хэлп, мне выводится хэлп, а когда ввожу другой кейс - снова хэлп. Что не так? *т.е., программу нужно прогнать по 4 кейсам, но в различном порядке, например: help, iterations, help, test. Добавлено через 6 минут аааа, всё, нашла косяг. почему dd не обновлял, их было "2 штуки". Один dd убрала, поставила в конец проверку строчки на "выход" и всё нормально, вроде бы.
0
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
28.09.2013, 09:41 [ТС] | 16 | |||||
Добрый день. Помогите с "хитростью кода".
Дело в том, что мне нужно вводить строчку целиком. Примерно я ввожу:
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
28.09.2013, 09:52 | 17 | |||||
Думаю примерно так:
1
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||||||
28.09.2013, 10:56 | 18 | |||||
0
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
28.09.2013, 10:59 [ТС] | 19 |
Коды сейчас не могу проверить, позже.
Return0 - switch из первого сообщения, это условие задачи.
0
|
28.09.2013, 10:59 | |
28.09.2013, 10:59 | |
Помогаю со студенческими работами здесь
19
Ввод с клавиатуры произвольной текстовой строки длинной не более 50 символов и многократный подсчет числа Использование оператора switch для выполнения последовательности действий как в С++ Использование конструкции выбора switch для вывода элементов окружности Из текстовой переменной в формулу Чтение текстовой переменной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |