C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
множества, работа с множествами
frofis
Отправлено: 19.03.2004, 15:33


Ученик-кочегар

Группа: Участник
Сообщений: 9



Кто-нибудь может посоветовать как сократить код

Set<char,0,255>validChar;
//validChar << ' ' << '!' << '"' << '#' << '$' << '%' << '&' << '\'' << '(' << ')' << '*' << '+' << ',' << '-' << '.' << '/';
validChar << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9';
validChar << ':' << ';' << '<' << '=' << '>' << '?' << '@' << '[' << '\\' << ']' << '^' << '_' << '`' << '{' << '|' << '}' << '~' << '¦';
validChar << 'A' << 'B' << 'C' << 'D' << 'E' << 'F' << 'G' << 'H' << 'I' << 'J' << 'K' << 'L' << 'M' << 'N' << 'O' << 'P' << 'Q' << 'R' << 'S' << 'T' << 'U' << 'V' << 'W' << 'X' << 'Y' << 'Z';
validChar << 'a' << 'b' << 'c' << 'd' << 'e' << 'f' << 'g' << 'h' << 'i' << 'j' << 'k' << 'l' << 'm' << 'n' << 'o' << 'p' << 'q' << 'r' << 's' << 't' << 'u' << 'v' << 'w' << 'x' << 'y' << 'z';
validChar << 'А' << 'Б' << 'В' << 'Г' << 'Д' << 'Е' << 'Ж' << 'З' << 'И' << 'Й' << 'К' << 'Л' << 'М' << 'Н' << 'О' << 'П' << 'Р' << 'С' << 'Т' << 'У' << 'Ф' << 'Х' << 'Ц' << 'Ч' << 'Ш' << 'Щ' << 'Ъ' << 'Ы' << 'Ь' << 'Э' << 'Ю' << 'Я';
validChar << 'а' << 'б' << 'в' << 'г' << 'д' << 'е' << 'ж' << 'з' << 'и' << 'й' << 'к' << 'л' << 'м' << 'н' << 'о' << 'п' << 'р' << 'с' << 'т' << 'у' << 'ф' << 'х' << 'ц' << 'ч' << 'ш' << 'щ' << 'ъ' << 'ы' << 'ь' << 'э' << 'ю' << 'я';
if (!validChar.Contains(' '))
return true;
Asher
Отправлено: 19.03.2004, 16:03


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
А циклы использовать те пробовали? biggrin.gif
Для последовательностей типа 0..9 и А..Я, а..я самое то
Zmey
Отправлено: 19.03.2004, 16:20


Ученик-кочегар

Группа: Участник
Сообщений: 15



так навскидку:
в цикле записываешь туда не сами символы , а коды символов — они идут по порядку (посмотри таблице кодировки)
frofis
Отправлено: 19.03.2004, 16:55


Ученик-кочегар

Группа: Участник
Сообщений: 9



А Вы подскажите как в циклах, а то у меня голова уже не варит с этими dos и windows кодировками и c char и unsigned char
Zmey
Отправлено: 19.03.2004, 17:08


Ученик-кочегар

Группа: Участник
Сообщений: 15



типа вот так:

CODE
Set <char,0,255> b;
for(int i=0; i<255; ++i)
{
b<<i;
}


Отредактировано Zmey — 19/03/2004, 18:12
Valdemar
Отправлено: 19.03.2004, 17:25


Мастер участка

Группа: Участник
Сообщений: 433



Если Вы хотите проверить символ на принадлежность множеству символов, начинающемуся с пробела и закачивающемуся буквой 'я', то я думаю, что лучше сделать это так:
CODE
char ch;
if (ch>=(unsigned char)' ' && ch <=(unsigned char)'я')
 //символ входит в множесто
else
 //символ не входит в множесто
frofis
Отправлено: 19.03.2004, 20:02


Ученик-кочегар

Группа: Участник
Сообщений: 9



Долго думал писАть — не пИсать, но я устал
Zmey шел бы ты со своими ответами или хотя бы читай вопросы

Кому надо вот символы, которые валидны для РКЦ при проверке на допустимость в посылках Rabis2
for (int i = -127; i < 128; i++)
if ((i < -80) || ((i> -33) && (i < -16)) || ((i> 31) && (i < 127)))
validChar << (unsigned char)i;

Вернуться в Вопросы программирования в C++Builder