Fórum como faço para gerar combinações aleatórias???? #178889

01/09/2003

0

Bom dia, tem geito de um programa gerar aleatóriamente combinações de numeros??? por exemplo forneço ao programa os seguinte numeros:
06,10,20,30,40,60,55,85,99. e ele fara todas as combinaçoes possiveis com estes mesmos.
Se alguem puder me dar uma luz agradeço
Miguel
Obs uso delphi5 e paradox


Miguel

Miguel

Responder

Posts

01/09/2003

Bacalhau

Antes de irmos ao Delphi, é bom pensar um pouco e ver os problemas que temos entre mãos:

1. Não sabemos quantos números irão ser dados à partida.
2. Temos de guardar todos os números introduzidos.
3. Temos de gerar as combinações dos números referidos.

Solução

1. Vamos criar um contador de números e uma estrutura que guarde os números; nada melhor que uma array dinâmica. Cá vai:

var i, m : integer;
numeros : array of integer;
combinacoes : array of array of integer;

Depois temos de arranjar uma repetição para ´caçarmos´ os números.

Como ponto de paragem (perfeitamente arbitrário) decidi que a entrada pára quando o utilizador digitar -1. A nossa array vai aumentando à medida que o utilizador insere números. Cá vai:

i := 0;
setlength(numeros,1);

repeat
<o utilizador coloca um número e é guardado na variável ´m´>

// se for diferente de (-1) incrmenta ´i´ e aumenta a array

if m <> (-1) then
i := i + 1;
numeros[i - 1] := m;
setlength(numeros,max(numeros) + 1); // aumentei a array
end;
until m = (-1);

No final deste ciclo, capturámos o número de números lidos (....) que está em ´i´ e a nossa array dinamica contém os números.

A partir daqui faz-se um ciclo ´for´ do tipo

for m := 0 to max(numeros) - 1 do
begin
.....
end;

onde a array combinacoes vai guardar o que for feito no ciclo for. É claro que vai haver dificuldade em fazer crescer a array que agora tem 2 dimensões.

Mas como o colega já tem aqui uma proposta (nada mais...) para resolver o problema, sugiro que complete o que falta entre o begin e o end (os pontinhos, os pontinhos...).

Se ainda assim não der manda um mail para virtual.viegas@netc.pt

Boa sorte
bacalhau


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar