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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [Src] GetSimplificNumbers [No es una Compresion]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Src] GetSimplificNumbers [No es una Compresion]  (Leído 1,646 veces)
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
[Src] GetSimplificNumbers [No es una Compresion]
« en: 5 Julio 2010, 23:09 pm »

Solo es un simple algoritmo para simplificación de números en un array!¡.

la idea es ingresar números y qué los Simplifique, es decir 1,2,3,4,5,9,10,15,16,17,18,555,342,423,422 los ordena de la siguiente manera:

1~5,9,10,15~18,555,342,423,422

si se integra un ordenamiento QuickSort ordenaría adecuadamente!¡.

OJO: NO Es RECOMENDABLE USARLO CON NÚMEROS DECIMALES!¡.

Código
  1.  
  2. '
  3. '   /////////////////////////////////////////////////////////////
  4. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  5. '   //                                                         //
  6. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  7. '   //                                                         //
  8. '   //    |-> Pueden Distribuir Este Código siempre y cuando   //
  9. '   // no se eliminen los créditos originales de este código   //
  10. '   // No importando qué sea modificado/editado o engrandecido //
  11. '   // o achicado, si es en base a este código                 //
  12. '   /////////////////////////////////////////////////////////////
  13. Option Explicit
  14.  
  15. Public Function GetSimplificNumbers(ByRef ArrayOfNumbers() As Variant) As String()
  16. If (Not ArrayOfNumbers) = -1 Then Exit Function '   //  Array entrante, iniciado?.
  17. Dim Lng_ArrayTmp$()                             '   //  Colección de Números Simplificados!¡.
  18. Dim Lng_Ini&, Lng_End&, Lng_Index&              '   //  Variables para el Bucle.
  19. Dim Lng_AntPosNumber&                           '   //  Indice del Numero anterior (Numero del Array entrante).
  20. Dim Lng_ResNumber&                              '   //  residuo de Lng_Index& - Lng_AntPosNumber&.
  21. Dim Lng_ArrayCount&                             '   //  Contador de las dimensiones de Lng_ArrayTmp$.
  22. Dim Bool_Swith                  As Boolean      '   //  swith para saber si se debe simplificar!¡.
  23.  
  24.    '   //  Call Start_QuickSort(ArrayOfNumbers(), AcendetOrder)    '   //  http://foro.elhacker.net/programacion_vb/source_ordenar_array_low_y_fast-t272312.0.html
  25.  
  26.    Lng_Ini = LBound(ArrayOfNumbers):   Lng_End = UBound(ArrayOfNumbers)
  27.    ReDim Lng_ArrayTmp$(Lng_ArrayCount&)
  28.    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  29.  
  30.    For Lng_Index& = Lng_Ini + 1 To Lng_End
  31.        Lng_ResNumber& = ArrayOfNumbers(Lng_Index&) - ArrayOfNumbers(Lng_Index& - 1)
  32.        If Lng_ResNumber& > 1 Then
  33.            If Bool_Swith Then
  34.                If Lng_AntPosNumber& > 2 Then
  35.                    Lng_ArrayTmp$(Lng_ArrayCount&) = Lng_ArrayTmp$(Lng_ArrayCount&) & "~" & ArrayOfNumbers(Lng_Index& - 1)
  36.                Else
  37.                    Lng_ArrayCount& = Lng_ArrayCount& + 1
  38.                    ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  39.                    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index& - 1)
  40.                End If
  41.            End If
  42.            Lng_ArrayCount& = Lng_ArrayCount& + 1
  43.            ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  44.            Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  45.            Bool_Swith = False
  46.        ElseIf Lng_ResNumber& = 1 Then
  47.            If Not Bool_Swith Then Lng_AntPosNumber& = 0
  48.            Bool_Swith = True
  49.            If Lng_Index& = Lng_End Then
  50.                If conversion.cbool(InStr(1, Lng_ArrayTmp$(Lng_ArrayCount& - 1), "~")) Then
  51.                    Lng_ArrayCount& = Lng_ArrayCount& + 1
  52.                    ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  53.                    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  54.                Else
  55.                    Lng_ArrayTmp$(Lng_ArrayCount&) = Lng_ArrayTmp$(Lng_ArrayCount&) & "~" & ArrayOfNumbers(Lng_Index&)
  56.                End If
  57.            Else
  58.                Lng_AntPosNumber& = Lng_AntPosNumber& + 1
  59.            End If
  60.        ElseIf Lng_ResNumber& = 0 Then
  61.            If Lng_AntPosNumber& > 0 Then
  62.                Lng_AntPosNumber& = Lng_AntPosNumber& + 1
  63.            Else
  64.                Lng_AntPosNumber& = 0
  65.            End If
  66.        End If
  67.    Next
  68.    GetSimplificNumbers = Lng_ArrayTmp$
  69. End Function
  70.  
  71.  

Ejemplo:

Código
  1.  
  2. Public Function NumeroAleatorio(MinNum As Long, MaxNum As Long) As Long
  3. Dim Tmp                                 As Long
  4.    If MaxNum < MinNum Then: Tmp = MaxNum: MaxNum = MinNum: MinNum = Tmp
  5.    Randomize: NumeroAleatorio = (MinNum - MaxNum + 1) * Rnd + MaxNum
  6. End Function
  7.  
  8. Sub main()
  9. Dim ArrayTmp() As Variant
  10. Dim i&, i2&
  11.    i& = 100
  12.    ReDim ArrayTmp(i&)
  13.    For i2& = 0 To i&
  14.        ArrayTmp(i2&) = CStr(NumeroAleatorio(5, 99))
  15.    Next
  16.    Call Start_QuickSort(ArrayTmp(), AcendetOrder) '   //  http://foro.elhacker.net/programacion_vb/source_ordenar_array_low_y_fast-t272312.0.html
  17.    Call MsgBox(Strings.Join(GetSimplificNumbers(ArrayTmp), ","))
  18. End Sub
  19.  
  20.  

Alternativas:
http://foro.elhacker.net/programacion_visual_basic/src_abbreviatenumericarray_by_psyke1-t298689.0.html

P.D.: No escribí los números yo en Array fueron generados aleatoria-mente!¡.

Sangriento Infierno Lunar!¡.


« Última modificación: 5 Julio 2010, 23:40 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [Src] GetSimplificNumbers [No es una Compresion]
« Respuesta #1 en: 5 Julio 2010, 23:20 pm »

P.D.: No escribí los números yo en Array fueron generados aleatoria-mente!¡.

Hubiera sido lindo que el array se generara consecutiva y aleatoriamente ;)


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Src] GetSimplificNumbers [No es una Compresion]
« Respuesta #2 en: 5 Julio 2010, 23:25 pm »

Código
  1.  
  2. Public Function NumeroAleatorio(MinNum As Long, MaxNum As Long) As Long
  3. Dim Tmp                                 As Long
  4.    If MaxNum < MinNum Then: Tmp = MaxNum: MaxNum = MinNum: MinNum = Tmp
  5.    Randomize: NumeroAleatorio = (MinNum - MaxNum + 1) * Rnd + MaxNum
  6. End Function
  7.  
  8. Sub main()
  9. Dim ArrayTmp() As Variant
  10. Dim i&, i2&
  11.    i& = 100
  12.    ReDim ArrayTmp(i&)
  13.    For i2& = 0 To i&
  14.        ArrayTmp(i2&) = CStr(NumeroAleatorio(5, 99))
  15.    Next
  16.    Call Start_QuickSort(ArrayTmp(), AcendetOrder) '   //  http://foro.elhacker.net/programacion_vb/source_ordenar_array_low_y_fast-t272312.0.html
  17.    Call MsgBox(Strings.Join(GetSimplificNumbers(ArrayTmp), ","))
  18. End Sub
  19.  
  20.  

Sangriento Infierno Lunar!¡.
« Última modificación: 5 Julio 2010, 23:28 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [Src] GetSimplificNumbers [No es una Compresion]
« Respuesta #3 en: 6 Julio 2010, 00:02 am »

Muy buena Black!!! ;-)
Y encima es el doble de rapida que la mia... :-\

Dulces Ranas¡! :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines