elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [RETO] CompWordsAlphabetically
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: [RETO] CompWordsAlphabetically  (Leído 9,297 veces)
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [RETO] CompWordsAlphabetically
« Respuesta #10 en: 11 Marzo 2011, 16:43 pm »

Che Fran, me parece a mi o haces un tipo de trampa? xD es decir q es eso de dividir entre 2 xD?

@Karcrack fijate con esto a ver si anda tu funcion..

Código:
Private Sub Form_Load()

    Debug.Print kCompare("elfo", "elefante")
    Debug.Print kCompare("ave", "zorro")
    Debug.Print kCompare("hola", "")
    Debug.Print kCompare("zero", "zerocool")
    Debug.Print kCompare("feo", "    ")
    Debug.Print kCompare("frog", "frog")
    Debug.Print kCompare("faso", "fasa")
    Debug.Print kCompare("JOJO", "jojo")
   
   
End Sub


« Última modificación: 11 Marzo 2011, 16:51 pm por XXX-ZERO-XXX » En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [RETO] CompWordsAlphabetically
« Respuesta #11 en: 11 Marzo 2011, 17:14 pm »

HOLA!!!

Che *Fran :¬¬ :¬¬, me parece a mi o haces un tipo de trampa? xD es decir q es eso de dividir entre 2 xD?

*Nick PLZ...

Nah, no es trampa el tema es que lenb devuelve el espacio en memoria  que es igual a el doble de caracteres.

GRACIAS POR LEER!!!


En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [RETO] CompWordsAlphabetically
« Respuesta #12 en: 11 Marzo 2011, 19:40 pm »

@79137913:Reparado, habia un problema con la comprobación de tamaños :xD
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] CompWordsAlphabetically
« Respuesta #13 en: 11 Marzo 2011, 19:56 pm »

Código
  1.        If (Not Not b) = False Then
  2.            ReDim b(-1 To 1)
  3.            b(-1) = 1
  4.            b(1) = 2
  5.            b(0) = 3
  6.        End If
  7.  

Porque esa comprobacion? No es que ese array ya tiene algo :-/ lo inicializas de una y listo :P, o sino mas facil con Choose (aunque no se si mas rapido :P)
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: [RETO] CompWordsAlphabetically
« Respuesta #14 en: 11 Marzo 2011, 20:28 pm »

Ah claro, ya entendi xD
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [RETO] CompWordsAlphabetically
« Respuesta #15 en: 11 Marzo 2011, 21:40 pm »

@raul338:Lo que hace esa linea If (Not Not b) = False Then es comprobar si el array ha sido rellenado... si no lo rellenará... No lo hago ni con un Choose() ni rellenando siempre el array por cuestión de velocidad.
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] CompWordsAlphabetically
« Respuesta #16 en: 11 Marzo 2011, 22:33 pm »

Tramposo, no sabia que se podian hacer funciones estaticas :xD :xD
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [RETO] CompWordsAlphabetically
« Respuesta #17 en: 12 Marzo 2011, 03:03 am »

Tramposo, no sabia que se podian hacer funciones estaticas :xD :xD
Dije al principio que valía todo... :silbar:

ATENCIÓN : No tiene porque devolver los números del primer post!!!

Aquí dejo la mía:

Código
  1. Option Explicit
  2. Option Compare Text
  3.  
  4. Private Declare Function lstrcmpW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
  5.  
  6. ' -1 > Error
  7. ' 1  > Iguales
  8. ' 0  > primera palabra
  9. ' 2  > segunda palabra
  10. Public Static Function CompareMrFrog(ByRef strWord1$, ByRef strWord2$) As Long
  11.    If LenB(strWord1) = 0 Or LenB(strWord2) = 0 Then
  12.        CompareMrFrog = -1
  13.        Exit Function
  14.    End If
  15.  
  16.    If strWord1 = strWord2 Then
  17.        CompareMrFrog = 1
  18.        Exit Function
  19.    End If
  20.  
  21.    CompareMrFrog = lstrcmpW(StrPtr(strWord1), StrPtr(strWord2)) + 1
  22. End Function

@Karcrack


DoEvents! :P
« Última modificación: 12 Marzo 2011, 14:52 pm por Mr.Frog™ » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [RETO] CompWordsAlphabetically
« Respuesta #18 en: 12 Marzo 2011, 13:43 pm »


TRAMPOOOOOOOOSOOOOOO!!
Anda que modificar las normas a tu gusto... ya te vale :¬¬
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [RETO] CompWordsAlphabetically
« Respuesta #19 en: 12 Marzo 2011, 14:51 pm »

Jajajajaja :laugh:
Si te fijas, en ningún momento dije que debia que devolver esos números... :silbar: :-*

Tu función devuelve un resultado erróneo aquí:
Código:
    Debug.Print kCompare("feo", "    ")
Debería devolver la segunda y devuelve la primera... :rolleyes:

Ahora dejo mi versión 2:
Código
  1. Option Explicit
  2. Option Base 0
  3.  
  4. Private Declare Sub PutMem4 Lib "msvbvm60.dll" (ByVal Ptr As Long, ByVal Value As Long)
  5. Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
  6. Private Declare Function IsCharUpperW Lib "user32.dll" (ByVal lngChar As Long) As Long
  7.  
  8. Private lngAscHeader1&(5), lngAscHeader2&(5)
  9. Private intAsc1%(), intAsc2%()
  10.  
  11. ' 0 -> Error
  12. ' 1 -> First Word
  13. ' 2 -> Equal
  14. ' 3 -> Secon Word
  15. Friend Static Function Compare(ByRef strWord1$, ByRef strWord2$) As Long
  16. Dim Q&, L&
  17.  
  18.    L = LenB(strWord1) \ 2
  19.    If L = 0 Or LenB(strWord2) = 0 Then Exit Function
  20.  
  21.    lngAscHeader1(3) = StrPtr(strWord1)
  22.    lngAscHeader2(3) = StrPtr(strWord2)
  23.  
  24.    For Q = 0 To L
  25.        If IsCharUpperW(intAsc1(Q)) Then
  26.            intAsc1(Q) = intAsc1(Q) + 32
  27.        End If
  28.  
  29.        If IsCharUpperW(intAsc2(Q)) Then
  30.            intAsc2(Q) = intAsc2(Q) + 32
  31.        End If
  32.  
  33.        If intAsc2(Q) > intAsc1(Q) Then
  34.            Compare = 1
  35.            Exit Function
  36.        ElseIf intAsc2(Q) < intAsc1(Q) Then
  37.            Compare = 3
  38.            Exit Function
  39.        ElseIf Q = L Then
  40.            Compare = 2
  41.            Exit Function
  42.        End If
  43.    Next Q
  44. End Function
  45.  
  46. Private Sub Class_Initialize()
  47.    lngAscHeader1(0) = &H1&
  48.    lngAscHeader1(1) = &H2&
  49.    lngAscHeader1(4) = &H7FFFFFFF
  50.    PutMem4 VarPtrArray(intAsc1), VarPtr(lngAscHeader1(0))
  51.  
  52.    lngAscHeader2(0) = &H1&
  53.    lngAscHeader2(1) = &H2&
  54.    lngAscHeader2(4) = &H7FFFFFFF
  55.    PutMem4 VarPtrArray(intAsc2), VarPtr(lngAscHeader2(0))
  56. End Sub
  57.  
  58. Private Sub Class_Terminate()
  59.    PutMem4 VarPtrArray(intAsc1), 0&
  60.    PutMem4 VarPtrArray(intAsc2), 0&
  61. End Sub

Ejemplos:
Código
  1. Private Sub Form_Load()
  2. Dim c As New Class1
  3.  
  4.    Debug.Print "---------------------------------------------"
  5.    Debug.Print c.Compare("rana", "")
  6.    Debug.Print c.Compare("hola", "holas")
  7.    Debug.Print c.Compare("bienvenido", "bienvenida")
  8.    Debug.Print c.Compare("Ejemplo", "eJempLIficar")
  9.    Debug.Print c.Compare("igual", "igual")
  10.    Debug.Print c.Compare("PaLaBrA", "palabra")
  11.    Debug.Print "---------------------------------------------"
  12.    Debug.Print c.Compare("elfo", "elefante")
  13.    Debug.Print c.Compare("ave", "zorro")
  14.    Debug.Print c.Compare("hola", "")
  15.    Debug.Print c.Compare("zero", "zerocool")
  16.    Debug.Print c.Compare("feo", "    ")
  17.    Debug.Print c.Compare("frog", "frog")
  18.    Debug.Print c.Compare("faso", "fasa")
  19.    Debug.Print c.Compare("JOJO", "jojo")
  20. End Sub

Resultado:
Código:
---------------------------------------------
 0
 1
 3
 3
 2
 2
---------------------------------------------
 3
 1
 0
 1
 3
 2
 3
 2



DoEvents! :P
« Última modificación: 12 Marzo 2011, 15:46 pm por Mr.Frog™ » En línea

Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto ;)
Ingeniería Inversa
NeoKiller 3 2,929 Último mensaje 15 Agosto 2004, 23:12 pm
por NeoKiller
Reto!!
Ingeniería Inversa
HaCkZaTaN 2 2,977 Último mensaje 10 Septiembre 2004, 09:30 am
por Ðevastador
Reto vB
Ingeniería Inversa
nhouse 2 3,536 Último mensaje 16 Marzo 2005, 09:41 am
por 4rS3NI(
reto en VB6
Ingeniería Inversa
ellolo 1 2,653 Último mensaje 15 Abril 2005, 10:03 am
por UnpaCker!
Un reto !!! « 1 2 3 »
Programación Visual Basic
VirucKingX 24 8,560 Último mensaje 8 Mayo 2006, 23:36 pm
por Kizar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines