Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Cj2009z en 4 Abril 2007, 02:23 am



Título: Letras alatorias no repetidas
Publicado por: Cj2009z en 4 Abril 2007, 02:23 am
Hola amigos, como estan, espero q muy bine, bueno veran, me gustaria saber como sacar letras alatorias pero que no sean repetidas, un ejemplo de esto seria:

FXKLK-FFF25-CAVDR-12F35-VAL87

entonces asi como se encuentra arriba me gustaria q dicho programa me tirara alatoriamente las letras pero no repetidas tomando en cuenta esos guiones que se encuentran tambien. Espero que ayuden con mi hilo, gracias.


Título: Re: Letras alatorias no repetidas
Publicado por: DrakoX en 4 Abril 2007, 06:06 am
Averigua sobre
- Rnd
- Mid
y desp es cuestion de ingeniarselas

salu2


Título: Re: Letras alatorias no repetidas
Publicado por: MANULOMM en 4 Abril 2007, 06:11 am
Nose Si Depronto esto te sirva, todo es cuestion de logica y saber un poco de caracteres Ascii, aqui lo que hize fue generar 5 numeros aleatorios 5 veces he ir componiendo la clave conviertiendo  los numero aleatorios (ascii) en caracteres mediante la funcion Chr$
El objetivo es que estudies bien el code todo es cuestion de analisis.... este lo acabo de hacer, no es tan dificil

Código:
Private Sub Command1_Click()
    Dim MAY As Integer 'Num Aleatorio Letras MAYUSCULAS
    Dim Num As Integer 'Num Aleatorio Numeros 0-9
    Dim LON As Integer 'Letra O Numero
    Dim i As Integer 'Control De Bucle
    Dim j As Integer 'Control De Bucle
    Dim Clave As String 'Clave Completa XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
    For i = 1 To 5
        For j = 1 To 5
            Randomize
            LON = Rnd * 1
            If LON = 0 Then 'Si Es Verdadero Se Genera Letra MAYUSCULA
                Randomize
                MAY = Rnd * 24
                MAY = MAY + 65
                If j = 5 And i < 5 Then
                    Clave = Clave + Chr$(MAY) + "-"
                Else
                    Clave = Clave + Chr$(MAY)
                End If
            Else 'De lo contrario se genera un numero de 0 - 9
                Randomize
                Num = Rnd * 8
                Num = Num + 49
                If j = 5 And i < 5 Then
                    Clave = Clave + Chr$(Num) + "-"
                Else
                    Clave = Clave + Chr$(Num)
                End If
            End If
        Next j
    Next i
    MsgBox Clave
End Sub
Mira estos enlaces:
http://es.wikipedia.org/wiki/ASCII
http://www.google.com.co/search?hl=es&q=Ascii&meta=

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Letras alatorias no repetidas
Publicado por: DrakoX en 4 Abril 2007, 06:22 am
no hay ni necesidad de usar ascii,
se puede crear un array cn todos los caracteres que uno quiere que se utilizan y listo.
de esa forma te ahoras la conversion,

es mas simple de lo que uno puede pensar,
el tema es que hay q pensar jajaja xD

salu2 y suerte


Título: Re: Letras alatorias no repetidas
Publicado por: MANULOMM en 4 Abril 2007, 07:45 am
Tambien lo pense de esa manera pero con este code es mas facil estudiar y aprender además a nivel de memoria resultaria mas pesado.... :D, tambien se puede hacer con una enumeracion, y un modulo para la comparacion  pero ya es cosa de cada quien, realmente lo hize de esta manera por recursividad y aprovechamiento de espacio en pila

Atentamente,


Juan Manuel Lombana
Medellín - Colombia


Título: Re: Letras alatorias no repetidas
Publicado por: DrakoX en 5 Abril 2007, 18:54 pm
Código:
Private Sub Generar()
Randomize
For x = 1 To 5
    For y = 1 To 5
1:
        LON = Int(Rnd * 2)
        Select Case LON
            Case 0 'Genera Letra
                L = Int(Rnd * 25) + 65
                For pos = 1 To Len(Text1)
                    If InStr(pos, Text1, Chr$(L)) Then
                        GoTo 1
                    End If
                Next pos
                If y = 5 And x < 5 Then
                    Text1 = Text1 + Chr$(L) + "-"
                Else
                    Text1 = Text1 + Chr$(L)
               End If
           Case 1 'Genera Numero
               N = Int(Rnd * 10) + 48
                For pos = 1 To Len(Text1)
                    If InStr(pos, Text1, Chr$(N)) Then
                        GoTo 1
                    End If
                Next pos
                If y = 5 And x < 5 Then
                    Text1 = Text1 + Chr$(N) + "-"
                Else
                    Text1 = Text1 + Chr$(N)
                End If
        End Select
    Next y
Next x
End Sub

Con este code,
genera exactamente lo que pedis, y no se repite nada.

salu2

PD: Lo hice xq taba muy aburrido jaja xD


Título: Re: Letras alatorias no repetidas
Publicado por: Cj2009z en 7 Abril 2007, 19:27 pm
Gracias amigos los dos ejemplos me funcionarion a la perfeción. bueno entonces damos por cerrado este tema. gracias.