Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jerfs

[Resolvido] Rotina

Recommended Posts

Tenho um problema clássico em programação, alguém se habilita?

 

tenho uma tabela de questões para geração de provas com 5 registros, com um campo que conta numero de utilização...

 

reg1 0

reg2 0

reg3 0

reg4 0

reg5 0

 

Cada vez que a questão é utilizada em uma prova gerada por uma rotina interna, ele simplesmente incrementa um no campo de incrementação dele, suponhamos que as questões 1,2 e 3 foram utilizadas, então fica assim:

 

reg1 1

reg2 1

reg3 1

reg4 0

reg5 0

 

a idéia principal é garantir a utilização total do banco de dados, não deixando questões esquecidas se utilização... essa forma que usei funciona em termos, cada vez que a pesquisa é feita, executo uma query, organizando o banco pelo campos utilização de forma crescente, ficaria assim:

 

reg4 0

reg5 0

reg1 1

reg2 1

reg3 1

 

Logo, a próxima questão a ser inserida em uma prova ainda não foi utilizada... ou seja, garanto assim a rodagem total do banco de dados correto?!

 

Agora vamos a um complicador... quando uma nova questão é inserida no banco após um longo tempo de uso do software, vejamos como ficaria:

 

reg6 0

reg4 20

reg5 32

reg1 44

reg2 150

reg3 162

 

após todas a rotinas passadas, o reg6 já ficaria estagnado até ele chegar a ser maior que o outro lá de baixo, ou seja... NUNCA! isso quer dizer que em todas as provas que forem geradas terei o reg6 nela!

 

Alguém se arrisca a pegar esse caso complicado para me ajudar?! Aguardo retorno...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o banco de dados que você utiliza, dependendo do banco, pode fazer um RAND no próprio SQL no qual vai sortear questões.

Caso seu banco não possua esta funcionalidade, poderia criar uma lista com todas as questões, e então você desenvolver um algoritmo que faz o sorteio dos itens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, obrigado Marcio! então segue o que eu fiz para solucionar o meu problema...

 

Deixei o contador de ordem para se incrementar sempre... e quando entrar uma questão nova, ela receberá 0 certo? então quando ela for utilizada, ele testa se o número é 0, se sim, então coleto o numero do próximo registro (ex: 30) e incrementar 1 (30 + 1) então atribuo ao registro que anteriormente era 0. Isso garante que eu utilize o banco de dados inteiro... e não repita questões nunca...

 

Tks a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.