Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ работа с символами в Си

Автор: *оля* 14.10.2010 23:44

помогите пожалуйста решить задачу(Си):

Дан символ. Проверить: является ли данный символ согласной буквой
латинского алфавита (независимо от регистра).


нужно найти код данного символа и проверить входит ли он в множество кодов, соответствующих буквам латинского алфавита? или как-то по-другому?

Автор: volvo 15.10.2010 0:09

Можно...

if( strchr("BCDFGHJKLMNPQRSTVWXYZ", toupper(ch)) != NULL )
{
/* Если мы здесь - то символ, хранящийся в ch - согласная буква (независимо от регистра) */
}

Подробнее об этих функциях - здесь: http://www.cplusplus.com/reference/clibrary/cstring/strchr/ и http://www.cplusplus.com/reference/clibrary/cctype/toupper/

Автор: *оля* 15.10.2010 0:40

спасибо большое!

Автор: TarasBer 15.10.2010 1:02

А есть решение в стиле Паскаля (с множеством), которое не прогоняет строку, а сразу проверяет номер соответствующего бита? И чтобы не руками задавать const int letters = 1<<'B'||1<<'C'||...||1<<'Z'

Автор: volvo 15.10.2010 1:14

Для С - нету, для С++ можно попробовать.