![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Weman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 29.11.2005 Где: Санкт-Петрбург Репутация: нет Всего: нет |
Помогите с задачей:
В символьной строке удалить предпоследнее слово. Если можно, то приведите код с пояснениями для новичка в этом деле. Спасибо --------------------
|
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
А что можно использоваь?STL можно?
-------------------- Жизнь - печальная штука. |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
А что ты называешь словом? Например: "РжуНиМагу"- сколько здеся слов?
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 0 Всего: 12 |
Это для какого класса задачки?
Это сообщение отредактировал(а) Aleksandor - 4.12.2005, 22:16 -------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Я думаю,что слово это последовотельность символоа ограниченная с двух сторон знаками разделителями(за исключением первого и последнего слов).Т е "РжуНиМагу" это одно слово
-------------------- Жизнь - печальная штука. |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Ну, значится, Aleksandor`у нужно доработать. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Человек просил по-проще:
|
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Fixin, не хочется повторятся, но всё-таки, что будет, если ввести такую строку:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 0 Всего: 12 |
Вот еще примерчик, приближенный к реальной жизни, так сказать...
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Тады и я суну свои 5 копеек. Мне и комментировать нечего.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Что-то вроде этого
|
|||
|
||||
| blackofe |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
имхо, не очень хорошая практика. к примеру в кодировке 1251 ты упустишь букву 'ё'. я уж не говорю о том, что русских кодировок существует, блин, аж не одна. лучше использовать isalpha().
|
||||||
|
|||||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
blackofe, какие надо такие и вставлять в функцию. Это подразумевается. Библиотеки не сипользовались, для наглядности. Я стараюсь в примерах не использовать либы. Нашёл хорошую стандартную функцию, экономящую кусок кода - молодец.
|
|||
|
||||
| blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
вопрос не в экономии, а в правильности. твой вариант, повторюсь, не будет правильно работать. в кодировке 1251 он не учитывает буквы 'ё' и 'Ё'. в других кодировках будет вообще каша. |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Не все равно работать не будет даже в стандартной кодировке(к прмеру моей в WINXP).И дело не в ё и Ё .Я топик создавал про RString,там та же проблемма.симвлы от 'А' до 'п' отделены от 'р' до 'я' кучей барохла.Короче правельность этой проги(без серьезной дороботки) можно гарантировать только в Dose,что в сегоднишние дни бесмыссленно.А в Winde сложно увидеть ее в действии т е сложно сказать правельно ли она написана "даже с учетом упрощения ситуации" .
-------------------- Жизнь - печальная штука. |
|||
|
||||
| blackofe |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
в том то и дело, что дырка между "п" и "р" существует в определенной кодировке (в частности в 866), а, допустим, в кодировке 1251 дырки нет, но буквы 'ё' и 'Ё' выведены отдельно и не вписываются в формулу 'а' <= ch && ch <= 'я'. и поэтому и существует библиотечная функция isalpha, чтобы учитывать все эти особенности кодировок. вот пример:
этот код рисует такую картину (символы показаны в виндовой кодировке):
символ с кодом 0xb8, которым в виндовой кодировке представлена буква 'ё', в досовской кодировке представляет собой рамочный уголок. isalpha() разрулила эту ситуацию правильно. то же самое в отношении остальных символов. Это сообщение отредактировал(а) blackofe - 6.12.2005, 01:06 |
||||||
|
|||||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Ну вы, народ, даете
У автора топика задание на алгоритмизацию, а не на знание языка, посему предполагается простейшее решение без вызовов доп ф-ций и библиотека. А про указатели он сам говорил, что не знает. Да и, кажется, автор и сам больше не приходил. (а так, темка интересная получилась) |
|||
|
||||
| blackofe |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
использовать библиотечные функции незазорно. даже printf(). а если не хочется использовать библиотечную isalpha(), то тогда надо написать свою, но корректно. пример реализации, приведенный sergej.z:
неверный. о чем, собственно, и речь. /я уж не говорю о том, что эта функция вообще написана неправильно. но даже если ее и подрехтовать в соответствии с задумкой автора типа
то все-равно она будет работать неверно./ Это сообщение отредактировал(а) blackofe - 6.12.2005, 19:06 |
||||||
|
|||||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Да нет, проблема в том, что char никогда не станет русским символом ни в одной совместимой с ASCII кодировкой(Я к сож. очень привык к яваскрипту и PHP). Так что функция правильно определяет букву только для латиницы.
Я ведь не говорю. что isalpha() использовать ненадо. Просто задумка не искать конкретные разделители, а считать все "небуквы" разделителями. для большего функция isAlpha не задумывалась. Только как макет. Верный - неверный Если тебя это устроит, isalpha корректнее конечно.
Чем твоя правильнее? Просвети. |
|||
|
||||
| blackofe |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
просвещаю. ошибка в предпоследней операции &&.
вместо нее надо писать ||.
иначе, ни одна русская буква (если предположить, что русская кодировка подразумевает расположение всех букв алфавита строго друг за дружкой) не будет поймана этой функцией - ни одна русская буква не может находиться среди маленьких И среди больших букв одновременно. |
||||||
|
|||||||
| sexton |
|
|||
![]() sexton=Пономарь (eng) ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 5.5.2004 Где: Ульяновск Репутация: нет Всего: 9 |
Довольно известная штуковина - кусок кода из MSDN для определения слов в строке
Можно это присобачить |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Да, тьфу блин! это опечатка была.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |