índice ou número

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

índice ou número

Mensagem por MARCELOG »

Olá pessoal,
estou criando uma caixa de seleção onde o usuário pode marcar uma ou várias opções.
Cada opção deve fazer referencia a um valor que será somado ou diminuído de um valor "x".
No final, em face do valor "x" devo verificar quais as opções foram selecionadas.
Exemplo:
opção A - 2
opção B - 4
opção C - 8
opção D - 16
opção E - 32

Se todas opções forem marcadas, o resultado é 64.
Logo, se "x" for 64, sei que o usuário marcou todas as opções.
Da mesma forma, se "x" for 6, sei que o usuário marcou as opções A e B.
Igualmente, se "x" for 24, sei que o usuário marcou as opções C e D.
Também, se o usuário selecionar as opções B e E, o valor de "x" será 36.
Contudo, devo "prever" e armazenar todas as opções possíveis.
Há alguma maneira prática do fazer o serviço?
Sei que o Windows usa a técnica em face dos múltiplos indicados.
Obrigado.

MarceloG
Água mole em pedra dura tanto bate que até espirra!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

índice ou número

Mensagem por alxsts »

Olá!
MARCELOG escreveu:Se todas opções forem marcadas, o resultado é 64
O resultado será 62.

Não seria melhor seguir o modo tradicional, analisando opção por opção?

Não conheço a "a técnica em face dos múltiplos indicados". Fiquei interessado.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

índice ou número

Mensagem por rochinha »

Amiguinho,

Geralmente esta técnica é interessante para o caso de economia de memória para variáveis.

Entendo que para fins prática seria interessante voce usar um vetor para armazenar o resultados:

- Selecionou adiciona letra no vetor. nVetor := AADD( cLetra, aVetor )
- Selecionou adiciona letra no vetor. nVetor := ADEL( aVetor, ASCAN( cLetra, aVetor ) )

Algo assim.

Inclusive se procurar aqui no forum por MARCELOG verá que ele deu uma aula de vetores.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder