![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 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. |