Gambas - Como realizar una permutacion

 
Vista:

Como realizar una permutacion

Publicado por nisser olivo (2 intervenciones) el 08/08/2009 18:02:37
Buenos dias colegas programadores, hoy acudo por que se que me van a ayudar, tengo varios dias tratando de realizar una permutacion pero no he podido quiero colocar una serie de 7 numeros no importa que se repitan pero que al dar click a un boton me los permute y los muestre en un listbox, he urgado por la web sin encontrar ni un ejemplo, agradesco me ayuden en esto, gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como realizar una permutacion

Publicado por domingo (1 intervención) el 17/10/2012 17:08:54
hola aqui tienes las soluccion de las permutas
espero te sirva
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
PUBLIC arreglo AS NEW Integer[]
 
PUBLIC SUB Button1_Click()
 
  DIM i AS Integer
 
  'preparamos el arreglo para dividir el numero en cada uno de sus digitos
  arreglo.Clear
  'limpiamos la lista contenida en el control
  ListBox1.Clear
 
  'separamos el numero en cada uno de sus digitos y los colocamos en un arreglo
  FOR i = 0 TO ValueBox1.Length - 1
    ValueBox1.Select(i, 1)
    arreglo.Add(ValueBox1.Selection.Text)
  NEXT 
  
  'iniciamos la permutacion llamando a funcion
  'permutar pasando como parametros la cantidad de digitos que contiene el numero
  permutar(arreglo.Count)
  
END

'se aplica la recursividad para lograr la permutacion
PRIVATE SUB permutar(n AS Integer)
  DIM i, j AS Integer
  DIM cd AS String
 
  IF n > 1 THEN
    FOR i = 1 TO n
      j = arreglo[i - 1]
      arreglo[i - 1] = arreglo[n - 1]
      arreglo[n - 1] = j
      permutar(n - 1) 'aqui se ve la recursividad se llama asi misma la funcion
      j = arreglo[i - 1]
      arreglo[i - 1] = arreglo[n - 1]
      arreglo[n - 1] = j
    NEXT 
  ELSE 
    cd = arreglo[0]
    FOR i = 1 TO arreglo.Count - 1
      cd = cd & arreglo[i]
    NEXT 
    ListBox1.Add(cd)
  ENDIF 
  
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar