![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
есть маски
они приходят в любой комбинации. Но маска "а", должна исключать маски "b" и "с". То есть, если пришла "a", то "b" и "c" должны сброситься, или если пришла "b" или "c". то должна сброситься "a". Можно ли их как организовать, чтоб при побитовом сложении осуществлялось это исключение. Или только руками проверять ? |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
enum ![]() Ничего не понял, что требуется. Присваивайте значение пришедшей маски, и предыдущее значение сбросится. |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Как я понял у Вас есть переменная которая должна быть равна значению одной маски, а не их сочетанию. Ну так присваивайте нужное значение и все. Или вопрос в чем то другом ? тогда перефразируйте плиз, чтоб можно было понять, чтоб Вам требуется. Можно попробовать подкрепить вопрос примером. ![]() Это сообщение отредактировал(а) mes - 30.4.2009, 23:22 |
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну полностью задачу, так и не хотите осветить. Можно например 1. чтоб маска A включала в себя маски B и C, логичнее сказать для задачи использовать не { А, B, C }, а { ABC, B, C } 2. завести дополнительно исключающие маски :
тогда установка битов по маске будет провoдиться в два действия.
кстати выражение "пришла маска" имхо, не очень удачнoe, так как сама маска никуда не ходит, она сидит себе тихо и проверяет пришедшие значения на нужное сочетание битов. ![]() Это сообщение отредактировал(а) mes - 1.5.2009, 20:03 |
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Добавлено через 6 минут и 24 секунды Если disables сделать обычным (нестатичным), правила запретов можно менять динамически для каждого экземпляра |
|||
|
||||
zss |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
ну смысл такой. Есть генератор файлов. Он поставляет файлы различных типов - либо они архивированные - либо нет. Но в один момент времени он поставляет файлы одного типа. Также в процессе работы он может поменять тип генерируемых файлов. 1. Неизвестный тип 2. Файл открыт 3. Файл архивирован 3.1. Архивирован Неизвестным архиватором 3.1. Zip 3.3. Rar Задача - описать генератор файлов. Сложность в том, что их одного файла определить этого нельзя. Нужно накапливать свойства. Усложняется еще и тем, что для пользователя Zip и Rar это схожие архиваторы (можно разархивировать одним приложением), но типы эти разные. То есть Zip дополняет Rar. Также можно определить, что файл архивирован, но непонятно чем. У меня получились следующие маски
и при получении файла осуществляется проверка
1. Если поставлялись закрытые файлы и пришел открытый, то просто меняется тип на OPEN 2. Если поставлялись открытые файлы и пришел закрытый, то сбрасывается флаг OPEN и взводится тип ARCHIVE. Если же известен тип архивации, то побитовая сумма. Вся сложность в том, что Rar и Zip могут быть вместе, но XXX с ними не должен быть. То есть возможные ситуации 1. XXX 2. Zip 3. Rar 4. Zip & Rar Но вот если поставлялись файлы XXX и вдруг пожли Zip или Rar, то может получиться ток 1. XXX & Zip 2. XXX & Rar 3. XXX & Zip & Rar что неправильно. Вывод: 1. Хотелось бы избавиться от операций проверки и ограничиться лишь побитовыми операциями. 2. Для этого нужно как-то организовать исключающие маски. З.Ы. И можно ли это вообще сделать без проверок ? Добавлено через 4 минуты и 2 секунды math64, что-то не понял как это решает мою задачу ? |
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Твою задачу это не решает, она сложнее.
Можно сделать так:
|
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
можно если не создавать самому себе проблем ![]()
а может у пользователя вобще не будет WinRara, или такая версия которая любой архив одинаково легко раскроет ![]() А так как файл не знает ничего о приложении которое его будет открывать, он должен хранить только тип алгоритма. (т.е никаких сдвоенных масок) чтоб долго словами не объяснять, вот условный код того, как я вижу решение :
Это сообщение отредактировал(а) mes - 1.5.2009, 14:16 |
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Да, с классами код будет понятнее.
|
|||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
я лишь привел надуманный пример. Задача ставится именно для сдвоенных масок. Добавлено @ 14:21 необходимо различать типы xxx rar zip zip & rar Добавлено @ 14:22 xxx к тому же исключающий zip и rar Это сообщение отредактировал(а) zss - 1.5.2009, 14:22 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: 1 Всего: 2 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |