Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Dreamaker en 8 Agosto 2010, 03:16 AM

Título: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dreamaker en 8 Agosto 2010, 03:16 AM
Hola chicos, tengo un problema y no tengo ni idea de como hacerlo, los molesto porque quiero saber si alguien me puede ayudar a resolverlo simplemente para aprenderlo, porque es un tema que me tomarán en una examen (no me tomarán el enunciado, sí la metodología)

Bueno ahí vamos: 
   Con las cifras del año 2010, un usuario armó una contraseña. Averiguar esa contraseña sabiendo que es un número de cuatro dígitos (lo que da un total de 128 posibilidades), divisible por 11 donde, la suma de sus dígitos es igual a 2. Se deberán utilizar Funciones y Procedimientos para los diferentes procesos de cálculo y búsqueda del resultado.

Aclaro no es tarea, sino que simplemente estuve un buen rato tratando de resolver y no sé como coño puedo hacerlo, si alguien me puede dejar la resolución con un código no muy difícil de entender, sino simple

Gracias! ;)

PD: Lo que sí se es que hay que usar vectores, e ir swapeando (intercambiando) los valores del mismo hasta que se cumplan las condiciones pero no me sale hacerlo. Si pueden no poner códigos en inglés como he visto por allí, mejor ;D
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: rob1104 en 8 Agosto 2010, 04:17 AM
Si puedes poner tus intentos y de ahí irlos corrigiendo mejor.

Saludos
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dreamaker en 8 Agosto 2010, 04:25 AM
Es que osea estuve tratando lo que dije, ir swapeando pero no me sale que swapee todas las veces que sean necesarias hasta que llegue a la condición a cumplir y muestre el número correspondiente :-\
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: BlackZeroX en 8 Agosto 2010, 23:07 PM
usa el buscador, publique un codigo de combinaciones hace ya tiempo.

P.D.: Me suena a tarea!¡.

Dulces Lunas!¡.
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: hunter18 en 9 Agosto 2010, 05:29 AM
No importa si es tarea o para examen,si alguien del foro soluciona esa pregunta me saco el sombrero :-(, nunca pude resolver ese tipo de pregunta y los profesores nunca dieron la solucion, "por que sera", siempre me quedo la duda si era joda lo que dejaban
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Angeldj27 en 9 Agosto 2010, 14:44 PM
Creo que sebaneo postio algo de combinaciones no hace mucho tiempo solo busca la combinacion y los comparas en todo caso hasta te sale con if anidado eso creo..  :P solo es inmaginacion y busqueda
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: rob1104 en 9 Agosto 2010, 20:28 PM
Yo no lo veo tan dificil, la unica cifra que cumple con esas caracteristicas es 1001, y se puede sacar con un par de ciclos for sin problema.

Saludos
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dessa en 9 Agosto 2010, 21:30 PM
Cita de: rob1104 en  9 Agosto 2010, 20:28 PM
la unica cifra que cumple con esas caracteristicas es 1001

tengo una duda, 1100 no ?
























Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: BlackZeroX en 10 Agosto 2010, 01:21 AM
y 0011?, y 0110?, etc...
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dessa en 10 Agosto 2010, 01:27 AM
No sé, en mi criterio en la pregunta dice un número de 4 cifras, no contariá los ceros por delante, esa es mi duda, sino seria un strng con 4 numeros.

Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: BlackZeroX en 10 Agosto 2010, 02:32 AM
jeje es un numero aqui y en china (los 0 solo son relleno, pero aun asi es un NUMERO)!¡.
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dessa en 10 Agosto 2010, 03:18 AM
Para el caso seria lo mismo, eso elevaria las posibilidades a 4 números (corrijanme si me equivoco), los 4 son divisibles por 11, tambien los 4 numeros son de 4 cifras  y tambien la suma de las cifras de esos 4 números es 2, por lo tanto, Dreamaker, la forma de averiguar el password de ese usuario es el "ophcrack"  :D







Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: EddyW en 10 Agosto 2010, 03:38 AM
Te respondí en CPH :P

Aunque no creo que esté correcto pero como voy a mencionar más adelante, no entendí como lo planteas :P
Copy And Paste: :D

Me entretuve un rato, no se si entendí bien lo que planteas:
Me salió esto:
Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim Bit() As String, A As Integer, B As Integer, C As Integer, D As Integer, E As Integer
Dim Total As String, Div11 As Long, SumaDig As Long

Bit = Split(StrConv("2010", vbUnicode), Chr(0))
For A = 0 To 1
For B = 0 To 1
For C = 2 To 3
For D = 2 To 3
   Total = Bit(A) & Bit(B) & Bit(C) & Bit(D)
   Div11 = Total / 11
   SumaDig = 0
   For E = 1 To Len(Div11)
       SumaDig = SumaDig + Val(Mid(Val(Div11), E, 1))
   Next
   ' Suma de digitos igual a 2
   If SumaDig = 2 Then
       List1.AddItem "Gen:> " & Total & " -Div11>" & Div11 & " -Suma>" & SumaDig
   End If
   DoEvents
Next: Next: Next: Next
MsgBox List1.ListCount
End Sub


Como que no me cuadra, podrías mencionar el sitio de donde sacaste el ejercicio ;)

SaluDOS!!!
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dreamaker en 10 Agosto 2010, 05:29 AM
Bueno paso a aclararle las dudas a los que les interesó, es formar un una contraseña sabiendo que es un número de 4 dígitos formado por las cifras del año 2010 por lo cual queda sobreentendido que como bien dijeron algunos no podrá empezar con "0012" o "0021" o similares sino con "1 o 2" para que tenga 4 dígitos, ya que a "01" se considera su parte entera como "1"

Vuelvo a aclarar que no es ninguna tarea para los que pensaron así (y sino vean mi trayectoria en el foro) y que es más, voy a revisar los códigos por ahí y tratar de hacerlo nuevamente, y cuando lo tenga hecho dejaré la solución para todos, si alguien lo consigue hacer y quiere dejar la solución para que lo vean los demás puede hacerlo que de seguro a más de uno le servirá y no sólo a mi ya que lo voy a hacer igual ;D
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: EddyW en 10 Agosto 2010, 05:42 AM
Bueno, ahora no estoy como para hacer de nuevo el code, creo que es como lo puse solo que hay que corregir los for por:

Código (vb) [Seleccionar]
For A = 0 To 3
For B = 0 To 3
For C = 0 To 3
For D = 0 To 3


Eso genera 256 posibilidades, en realidad 128 como dice el ejercicio, pero fallé en algo por eso aparecen repetidas 2 veces..
Si analizas el code verás como funca ;)

SaluDOS!!!
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dessa en 10 Agosto 2010, 06:02 AM
Para mi hay 2 resultados



Private Sub Form_Load()

Dim x As Variant
Dim m As Double
Dim i As Byte
Dim suma As Byte


For x = 1000 To 2000
 If InStr(1, x, "0") > 0 Or InStr(1, x, "1") > 0 Or InStr(1, x, "2") > 0 Then
   m = x Mod 11
   If m = 0 Then
     suma = 0
     For i = 1 To Len(x)
       suma = suma + Mid(x, i, 1)
     Next
     If suma = 2 Then MsgBox x
  End If
 End If
Next

End Sub





Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: BlackZeroX en 10 Agosto 2010, 06:23 AM
para mi hay 4

Código (Vb) [Seleccionar]


Option Explicit

Private Sub Form_Load()
Dim ThisNumberNow       As Integer
Dim StrNumber           As String * 4
Dim IndexString         As Byte
Dim Suma                As Byte

    For ThisNumberNow = 1 To 9999
        If ThisNumberNow Mod 11 = 0 Then
            StrNumber = Format(ThisNumberNow, "0000")
            Suma = 0
            For IndexString = 1 To Len(StrNumber)
                Suma = Suma + Val(Mid(StrNumber, IndexString, 1))
            Next
            If Suma = 2 Then MsgBox StrNumber
        End If
    Next
   
End Sub



Cumple TODOS los criterios ( Jamas se dice que no puede estar compuesto por 0 antes xD )

P.D.: Tarea en Proceso xP.

Dulces Lunas!¡.

Ducles Lunas!¡.
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Dessa en 10 Agosto 2010, 06:37 AM
Cita de: Dreamaker en 10 Agosto 2010, 05:29 AM

Bueno paso a aclararle las dudas a los que les interesó, es formar un una contraseña sabiendo que es un número de 4 dígitos formado por las cifras del año 2010 por lo cual queda sobreentendido que como bien dijeron algunos no podrá empezar con "0012" o "0021" o similares sino con "1 o 2" para que tenga 4 dígitos, ya que a "01" se considera su parte entera como "1"


Si, lo aclaró nuevamente, pero para el caso es lo mismo,  un ejercicio para determinar un passwod tendria que tener un resultado solo , no ?

Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: rob1104 en 10 Agosto 2010, 08:12 AM
A mi solo me da una opcion posible, ¿se me estará pasando algo?
Código (vb) [Seleccionar]
Private Sub Form_Load()
   Dim Div As Integer
   Dim Num As String
   Dim Suma As String
   Dim Bucle1 As Integer
   Dim Bucle2 As Integer

   Suma = ""
   Div = 2010 \ 11     'cant. de num divisibles por 11
   For Bucle1 = 1 To Div
       Num = 11 * Bucle1
       If Num > 999 Then   'preguntamos si es de 4 cifras
           For Bucle2 = 1 To Len(Num)
               Suma = Val(Suma) + Val(Mid(Num, Bucle2, 1)) 'suma de sus digitos
               If Suma = 2 Then
                   MsgBox Num
               End If
           Next
       End If
   Next
End Sub
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: 79137913 en 10 Agosto 2010, 17:20 PM
HOLA!!!!


Yo lo hice con la funcion "mod" que devuelve el resto de la division:

Código (vb) [Seleccionar]


For PASS = 1000 To 2222
If PASS Mod 11 = 0 Then 'SE FIJA QUE DIVISIONES DE PASS/11 DAN RESTO 0
If Val(Mid(PASS, 1, 1)) + Val(Mid(PASS, 2, 1)) + Val(Mid(PASS, 3, 1)) + Val(Mid(PASS, 1, 1)) = 2 Then ' SE FIJA SI LA SUMA DE LAS CIFRAS DA 2
MsgBox "LA CONTRASEÑA ES " & PASS ' DEVUELVE LA CONTRASEÑA
End If
End If
Next
Título: Re: [Ayuda] Necesito saber como resolver este problema
Publicado por: Karcrack en 10 Agosto 2010, 19:56 PM
Segun estas condiciones:
El resultado seria este:
1001
1100


Algoritmo:
Código (vb) [Seleccionar]
Private Sub Form_Load()
   Dim i       As Long
   
   For i = 0 To 111
       If SumDigits(1001 + i * 11) = 2 Then Debug.Print 1001 + i * 11
   Next i
End Sub

Public Function SumDigits(ByVal lNumb As Long) As Long
   Dim bvTmp() As Byte
   Dim i       As Long
   
   bvTmp = StrConv(Trim$(Str$(lNumb)), vbFromUnicode)
   
   For i = LBound(bvTmp) To UBound(bvTmp)
       SumDigits = SumDigits + (bvTmp(i) - vbKey0)
   Next i
End Function