Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Dreamaker en 2 Septiembre 2010, 14:46 pm



Título: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 2 Septiembre 2010, 14:46 pm
Bueno un ejercicio bien facilito para que practiquen a ver quien lo hace mejor, luego pasaremos a recorrer la matriz de manera espiralada, en zig zag, por anillos etc

A ver quien se anima, es bien facilongo ;D

Hacer un programa que, dada una matriz de 5x5 (5 filas x 5 columnas), la llene con numeros aleatorios al azar SIN repetición entre un rango de 1 a 30(deberán generarse al azar), ordene esos números de menor a mayor, y luego deberá mostrar la X traspuesta que se encuentra impresa en la matriz osea, por ej:

Ejemplo:

(http://r.i.elhacker.net/cache?url=http://img267.imageshack.us/img267/1612/matrices.jpg)

Tanto el proceso de CargarMatriz, como el de OrdenarMatriz y el de MostrarMatriz deberán ser realizados con 1 estructura de repetición

PD: Para que vean que no es para hacerme la tearea les dejaré el code al finalizar el ejercicio, a ver quien hace el code más corto y prolijo

Pueden imprimir la matriz con Print o en labels, eso queda a elección

A codear mis buenos programadores! :laugh:


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Elemental Code en 2 Septiembre 2010, 15:51 pm
entonces cargamos numeros al azar en la matrix (jeje me re cope) y despues borramos los que no esten en la X?
no entedi :S

Seria que cargo todo.
y despues borro las etiquetas(X)

O X X X O
X O X O X
X X O X X
X O X O X
O X X X O


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 2 Septiembre 2010, 15:56 pm
Bueno vi que varios se pasaron y al final nadie se animó, salvo vos Elemental Code :-X

entonces cargamos numeros al azar en la matrix (jeje me re cope) y despues borramos los que no esten en la X?
no entedi :S

Seria que cargo todo.
y despues borro las etiquetas(X)

O X X X O
X O X O X
X X O X X
X O X O X
O X X X O

No, no tenés que borrar ningún elemento de los que no esté en la X, sino simplemente cargar toda la matriz con números aleatorios sin repetición y luego sólo mostrar la X traspuesta de la matriz como muestra la imagen (osea la matriz estará cargada por completo, pero solo mostrarás la X traspuesta de números que está en ella)

Se evaluará eficiencia aparte de eficacia ya que tanto les gusta medir los tiempos de ejecución como vi por ahí :D

Nota: Aparte de todo esto, un detalle no menor, y es que el código deberá ser bien legible y entendible


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Psyke1 en 2 Septiembre 2010, 16:04 pm
.
No entiendo mucho la logica de este reto, pero bueno... :silbar:
Porque tenermos que generar una matriz entera si solo vamos a mostrarlas diagonales?¿ :huh:

DoEvents¡! :P


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 2 Septiembre 2010, 16:12 pm
.
No entiendo mucho la logica de este reto, pero bueno... :silbar:
Porque tenermos que generar una matriz entera si solo vamos a mostrarlas diagonales?¿ :huh:

DoEvents¡! :P

La lógica es saber usar matrices y medir la eficacia de un programa de la mejor manera posible (como los retos por tiempo que hacen ahora)

Debes llenar la matriz completa porque así lo dice el ejercicio, luego con esa misma matriz la podrás recorrer de la manera que quieras (en este caso, por la X traspuesta)

Saludos!

PD: Lo importante es ser un programador el cual tenga mucha lógica y sabe programar, no un memorizador de funciones de x lenguaje, así sufren muchos después para migrar a otra plataforma completamente distinta, cuando lo único que cambia prácticamente es la sintaxis si sabes programar de verdad :D. Esto no es más que un ejercicio para practicar y poner a prueba sus conocimientos así mismos

Fijate *PsYkE1* ahora el agregado y verás por qué hay que llenar toda la matriz, aparte deberán ordenar esos números generados sin repetición de menor a mayor, que era la idea previa pero me había olvidado de agregarlo

A codear! :D


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 3 Septiembre 2010, 00:25 am
87 visitas y ni uno se anima a hacerlo?

Me hacen creer que sólo usan las funciones del lenguaje pero no saben los fundamentos de la programación que bien es lo más importante, el lenguaje es una herramienta nada más, la programación está adentro de uno

No me hagan pensar mal y que alguno se anime a hacerlo por lo menos..

Vamos que acordarse la sintaxis y las funciones de un lenguaje es muy fácil :laugh:


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Karcrack en 3 Septiembre 2010, 15:33 pm
He tenido un ratito libre y he hecho mi code :D
No se si es exactamente lo que se pedia, pero algo es algo :laugh:
Código
  1. Option Explicit
  2. Option Base 0
  3.  
  4. Dim bMatrix(4, 4)   As Byte
  5.  
  6. Public Sub FillAndSortMatrix()
  7.    Dim bvTmp(24)   As Byte
  8.    Dim i           As Long
  9.  
  10.    Call bURGN(bvTmp)
  11.    Call GnomeSort(bvTmp)
  12.    For i = 0 To 24
  13.        bMatrix((i \ 5), (i Mod 5)) = bvTmp(i)
  14.    Next i
  15. End Sub
  16.  
  17. Public Sub bURGN(ByRef bvArray() As Byte)
  18.    Dim x           As Integer
  19.    Dim n           As Integer
  20.    Dim colNumbers  As New Collection
  21.    Dim Max         As Long
  22.  
  23.    Max = 255
  24.  
  25.    With colNumbers
  26.        For x = 0 To 255
  27.            .Add x
  28.        Next x
  29.        For x = 0 To UBound(bvArray)
  30.            Call Randomize(Timer)
  31.            n = Int(Max * Rnd)
  32.            bvArray(x) = colNumbers(n + 1)
  33.            colNumbers.Remove (n + 1)
  34.            Max = Max - 1
  35.        Next x
  36.    End With
  37.    Set colNumbers = Nothing
  38. End Sub
  39.  
  40. Public Sub GnomeSort(ByRef bvArray() As Byte)
  41.    On Error Resume Next
  42.    Dim lPos        As Long
  43.    Dim lUbound     As Long
  44.  
  45.    lUbound = UBound(bvArray) + 1
  46.    While lPos < lUbound
  47.        If (lPos = 0) Or (bvArray(lPos) >= bvArray(lPos - 1)) Then
  48.            lPos = lPos + 1
  49.        Else
  50.            bvArray(lPos) = bvArray(lPos) Xor bvArray(lPos - 1)
  51.            bvArray(lPos - 1) = bvArray(lPos - 1) Xor bvArray(lPos)
  52.            bvArray(lPos) = bvArray(lPos) Xor bvArray(lPos - 1)
  53.            lPos = lPos - 1
  54.        End If
  55.    Wend
  56. End Sub
  57.  
  58. Sub Main()
  59.    Dim i           As Long
  60.    Dim w           As Long
  61.  
  62.    Call FillAndSortMatrix
  63.    For i = 0 To 4
  64.        For w = 0 To 4
  65.            If (w = i) Or (4 - i = w) Then
  66.                Debug.Print bMatrix(i, w),
  67.            Else
  68.                Debug.Print vbNullString,
  69.            End If
  70.        Next w
  71.        Debug.Print ""
  72.    Next i
  73. End Sub
  74.  


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: 79137913 en 3 Septiembre 2010, 15:45 pm
HOLA!!!

Creo que hice lo que pedis:

El form tiene un array de labels de 25 items (0-24) llamados LBL().

CODIGO DEL FORM :
Código
  1. Dim MATRIX() As Integer
  2. Public N As Integer ' DIMENSION DE LA MATRIZ
  3. Public PASA As Boolean ' VERIFICA LA REPETICION DE NUMEROS
  4. Public ORDENADO As Boolean ' VERIFICA QUE ESTE ORDENADO
  5.  
  6. Private Sub Form_Load()
  7.    Randomize
  8.    Me.Caption = "Ejercicio de Matrices"
  9.    'CREA LA MATRIZ
  10.    N = 5
  11.    ReDim MATRIX(N, N)
  12.    'MATRIZ CREADA
  13.    Call LLENAR_MATRIZ
  14.    Call ORDENAR_MATRIZ
  15.    Call MOSTRAR_MATRIZ
  16. End Sub
  17.  
  18. Private Sub LLENAR_MATRIZ()
  19.    For Y = 1 To N
  20.        For X = 1 To N
  21.            MATRIX(Y, X) = Int(Rnd() * 30)
  22.            'VERIFICA SI ESTA REPETIDO Y LO CAMBIA
  23.            PASA = False
  24.            While PASA = False
  25.                PASA = True
  26.                For Y2 = 1 To N
  27.                    For X2 = 1 To N
  28.                        If MATRIX(Y, X) = MATRIX(Y2, X2) And Not (X2 = X And Y2 = Y) Then
  29.                            PASA = False
  30.                        End If
  31.                    Next X2
  32.                Next Y2
  33.                If PASA = False Then
  34.                    MATRIX(Y, X) = Int(Rnd() * 30)
  35.                End If
  36.            Wend
  37.            'VERIFICA SI ESTA REPETIDO Y LO CAMBIA
  38.        Next X
  39.    Next Y
  40. End Sub
  41.  
  42. Private Sub ORDENAR_MATRIZ()
  43.    Dim AUX As Integer
  44.    While ORDENADO = False
  45.        ORDENADO = True
  46.        For Y = 1 To N
  47.            For X = 1 To N
  48.                If Not (X = N And Y = N) Then
  49.                    If X = N Then
  50.                        If MATRIX(Y, X) > MATRIX(Y + 1, 1) Then
  51.                            AUX = MATRIX(Y + 1, 1)
  52.                            MATRIX(Y + 1, 1) = MATRIX(Y, X)
  53.                            MATRIX(Y, X) = AUX
  54.                            ORDENADO = False
  55.                        End If
  56.                    Else
  57.                        If MATRIX(Y, X) > MATRIX(Y, X + 1) Then
  58.                            AUX = MATRIX(Y, X + 1)
  59.                            MATRIX(Y, X + 1) = MATRIX(Y, X)
  60.                            MATRIX(Y, X) = AUX
  61.                            ORDENADO = False
  62.                        End If
  63.                    End If
  64.                End If
  65.            Next X
  66.        Next Y
  67.    Wend
  68. End Sub
  69.  
  70. Private Sub MOSTRAR_MATRIZ()
  71.    For Y = 1 To N
  72.        For X = 1 To N
  73.            If X = Y Then
  74.                LBL(CT).Caption = MATRIX(Y, X)
  75.            End If
  76.            If X + Y = N + 1 Then
  77.                LBL(CT).Caption = MATRIX(Y, X)
  78.            End If
  79.            CT = CT + 1
  80.        Next X
  81.    Next Y
  82. End Sub
  83.  


GRACIAS POR LEER!!!


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Karcrack en 3 Septiembre 2010, 16:52 pm
@79137913: La matriz ha de estar ordenada y sus valores no pueden estar repetidos.


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: ssccaann43 © en 3 Septiembre 2010, 17:26 pm
Karcrack te has pasado...! Te quedo muy bueno el code...! Saludos...


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: 79137913 en 3 Septiembre 2010, 20:33 pm
@Karcrack

GRACIAS!!!

Ya arregle el codigo ;D y funciona perfecto. avisame si ves otro error.

GRACIAS POR LEER!!!


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Elemental Code en 4 Septiembre 2010, 02:08 am
Tanto el proceso de CargarMatriz, como el de OrdenarMatriz y el de MostrarMatriz deberán ser realizados con 1 estructura de repetición

Me esta carcomiendo las ideas esa parte >.<
como verifico que no sean iguales sin repasarlos?

osea un for para cargar y un for para evitar repeticiones.
pero esto no anda, tengo que hacerlo con uno solo.
¿Existe una funcion que se me este escapando?

EDITO:
Encontre la funcion filter pero tengo un problema:
Porque esta linea me tira "Error 13, No coinciden los tipos" ????

        If Filter(Matrix, tmplng, True) <> vbNullString Then GoTo Again

es para evitar repeticiones y deberia devolver nada si no encuentra coincidencia.


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 4 Septiembre 2010, 03:59 am


Karcrack:

Llenas la matriz con números sin repetición pero manualmente, tienen que llenarse con números aleatorios sin repetición, osea siempre llenará con los mismos valores en tu for, debe llenar con un 20 por ejemplo en la posición 0 en la primera carga, un 2 en la segunda y así, de manera aleatoria en todos los elementos del vector, ya que cargará los mismos números por cada vez que apretes el botón y eso no era lo que pedía

A ver si puedes corregir eso ;)



79137913:

Gastas memoria innecesariamente haciendo las variables públicas, sin mencionar que muchas ni las declaras

Había que llenar la matriz con una estructura de repetición, no 2 y más como veo

Código ineficiente (no es eficiente), aunque sí me doy cuenta del esfuerzo y eso se valora, fijate si le puedes modificar mientras tanto eso que te dije hasta que lo puedas optimizar por completo cuando ponga mi código y a medida que los demás vayan dejando los suyos



Elemental Code:

No es necesario que uses ninguna función rara ;)



Se están complicando demasiado para algo que es muy sencillo, el más aproximado es el de Karcrack (muy bien lo de i\5,i mod 5, ya sabés a lo que me refiero, asumo que vas a la univ) aunque también me pareció un poco rebuscado el código innecesariamente cuando se podría hacer mucho más simple

En unos días les dejo el code, no es necesario que usen ningún tipo de funciones raras del VB, lógica de programación nada más ;)

PD: Sólo 3 se animan a hacer el código? Me extraña y yo que pensaba que habían mejores programadores..

Acuerdense que hay que usar sólo 1 estructura de repetición para cada procedimiento. Luego corregiré el código de los demás, piensen si pueden mejorarlo y/o optimizarlo


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Karcrack en 4 Septiembre 2010, 04:29 am
No entiendo a que te refieres con lo de los numeros.. La matriz se rellena con valores aleatorios no repetidos ordenados numericamente cada vez que se ejecuta el code...

OFFTOPIC: Aun no voy a la uni, aunquq me alaga tu comentario  :P


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 4 Septiembre 2010, 04:36 am
No entiendo a que te refieres con lo de los numeros.. La matriz se rellena con valores aleatorios no repetidos ordenados numericamente...

OFFTOPIC: Aun no voy a la uni, me alaga tu comentario  :P

A lo que me refiero Karcrack, si por ejemplo tienes la matriz de 5x5 elementos y lo llenas así

Código
  1. For i=0 to 24
  2.   Matriz(i\5,i mod 5)=i
  3. Next i

Es obvio que los valores no se van a repetir, porque lo llena con los mismos valores en la misma posición, la gracia fijate sería (el rango de números a generar era de 0 a 30)

Código
  1. For i=0 to 24
  2.   Matriz(i\5,i mod 5)=Int((30 - 1 + 1) * Rnd + 1)
  3. Next i

Fijate que pasa en ese caso, la llena con valores al azar en distintas posiciones cada vez que apretas el commandbutton pero son valores repetidos, lo probaste? Bueno ahora sí, la gracia es que genere esos valores al azar pero sin repetición, y no al usar el Rnd a secas, espero que hayas entendido a lo que apuntaba ;)

Lo de la uni lo dije porque hay muy pocas personas que lleguen a ese razonamiento que mencioné, te lo mencionaron en algún lado o lo dedujiste vos sólo?

Admirable pues entonces ya que eso es lo que importa :D

PD: Ahora me doy cuenta porque casi nadie de los que participan en este foro de VB se anotó para hacer el reto, de ahora en más copiaran la lógica de los demás para hacerlo pero no interesa, acuérdense que lo que importa no es saberse de memoria las funciones de un lenguaje sino tener la lógica de como funciona la programación y con eso, en el lenguaje que sea, podrás pasarte al que más se te de la gana


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Karcrack en 4 Septiembre 2010, 04:46 am
Ahora estoy desde el movil y no puedo volver a probar el code... Pero cuando lo probe en el PC cada vez que lo ejecutaba generaba nuevas matrices... No se si llego a entender lo que planteas... :-[

Respecto a lo de rellenar la matriz, se me ocurrio a mi solito  :)


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: 79137913 en 4 Septiembre 2010, 05:37 am
@Dreamaker :
HOLAAAA!!!!

Lo que es ineficiente, lo entiendo y perfectamente, es mas me caracterizo por siempre llegar al objetivo pero de una manera muy enroscada y complicada, casi siempre ineficiente.

Lo de las variables, como me recomendas que las declare.

Y lo de los bucles, como queres que lo haga, ponele:

Código
  1. For x=1 to N+1
  2.    if x=N+1 then
  3.    x=1
  4.    y=y+1
  5.    if y=6 then exit for
  6.    endif
  7.    'CODIGO DEL FOR
  8. Next X
  9.  

??????


Esa es mi duda.

Entre a este foro especificamente para eso, para mejorar y hacer mas eficiente el codigo.


Espero ansiosamente la correccion ;D

GRACIAS POR LEER!!!


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Karcrack en 4 Septiembre 2010, 15:08 pm
Me he dado cuenta que pedias un rango especifico :laugh: Lo he arreglado, y tambien eso que decias:
Código:
Option Explicit
Option Base 0
 
Dim bMatrix(4, 4)   As Byte
 
Public Sub FillAndSortMatrix()
    Dim bvTmp(24)   As Byte
    Dim i           As Long
 
    Call bURGN(bvTmp)
    Call GnomeSort(bvTmp)
    For i = 0 To 24
        bMatrix((i \ 5), (i Mod 5)) = bvTmp(i)
    Next i
End Sub
 
Public Sub bURGN(ByRef bvArray() As Byte)
    Dim x           As Integer
    Dim n           As Integer
    Dim colNumbers  As New Collection
    Dim Max         As Long
 
    Max = 30
 
    With colNumbers
        For x = 1 To Max
            .Add x
        Next x
        For x = 0 To UBound(bvArray)
            Call Randomize(Timer * (Timer \ 3))
            n = Int((Max - 1) * Rnd) + 1
            bvArray(x) = colNumbers(n)
            colNumbers.Remove (n)
            Max = Max - 1
        Next x
    End With
    Set colNumbers = Nothing
End Sub
 
Public Sub GnomeSort(ByRef bvArray() As Byte)
    On Error Resume Next
    Dim lPos        As Long
    Dim lUbound     As Long
 
    lUbound = UBound(bvArray) + 1
    While lPos < lUbound
        If (lPos = 0) Or (bvArray(lPos) >= bvArray(lPos - 1)) Then
            lPos = lPos + 1
        Else
            bvArray(lPos) = bvArray(lPos) Xor bvArray(lPos - 1)
            bvArray(lPos - 1) = bvArray(lPos - 1) Xor bvArray(lPos)
            bvArray(lPos) = bvArray(lPos) Xor bvArray(lPos - 1)
            lPos = lPos - 1
        End If
    Wend
End Sub
 
Sub Main()
    Dim i           As Long
    Dim w           As Long
 
    Call FillAndSortMatrix
    For i = 0 To 4
        For w = 0 To 4
            If (w = i) Or (4 - i = w) Then
                Debug.Print bMatrix(i, w),
            Else
                Debug.Print vbNullString,
            End If
        Next w
        Debug.Print ""
    Next i
End Sub
Es normal que algunos numeros repitan posicion.. por ejemplo el 1... siempre va ir el primero... y al ser tan pequeño el rango (1-30) es realmente probable que salga...

Se podria hacer sin las funciones de ordenamiento y la de generar numeros aleatorios... simplemente recorriendo la matriz dandole valores aleatorios cada vez mas grandes (hasta el 30)... asi se mantendria el orden y serian numeros aleatorios...


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Tokes en 4 Septiembre 2010, 21:45 pm
Hola a todos:

No sé si esto es lo que se pedía y como se pedía, pero de igual manera lo dejo:

Código:
Option Explicit

Private Sub Command1_Click()
Dim x As Long
Dim i As Long
Dim aparecido(0 To 30) As Boolean
Dim matriz(0 To 24) As Long

'Carga matriz
    While i < 25
        Randomize
        x = CLng((30 - 1) * Rnd + 1)
        If Not aparecido(x) Then
            matriz(i) = x
            aparecido(x) = True
            i = i + 1
        End If
    Wend

'Ordena matriz
Dim li As Long, ls As Long, lsaux As Long

    li = 0
    ls = 24
   
    While ls > li
        lsaux = li
        For i = 0 To ls - 1
            If matriz(i + 1) < matriz(i) Then
                x = matriz(i + 1)
                matriz(i + 1) = matriz(i)
                matriz(i) = x
                lsaux = i
            End If
        Next
        ls = lsaux
    Wend

'Visualiza diagonales
    x = 4
    For i = 0 To 24 Step 6
        Label1(i).Caption = matriz(i)
        Label1(i + x).Caption = matriz(i + x)
        x = x - 2
    Next
End Sub

Se necesita un arreglo de 25 labels en el Form.

          Saludos.


Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: Dreamaker en 5 Septiembre 2010, 00:02 am
Hola a todos:

No sé si esto es lo que se pedía y como se pedía, pero de igual manera lo dejo:

Código:
Option Explicit

Private Sub Command1_Click()
Dim x As Long
Dim i As Long
Dim aparecido(0 To 30) As Boolean
Dim matriz(0 To 24) As Long

'Carga matriz
    While i < 25
        Randomize
        x = CLng((30 - 1) * Rnd + 1)
        If Not aparecido(x) Then
            matriz(i) = x
            aparecido(x) = True
            i = i + 1
        End If
    Wend

'Ordena matriz
Dim li As Long, ls As Long, lsaux As Long

    li = 0
    ls = 24
   
    While ls > li
        lsaux = li
        For i = 0 To ls - 1
            If matriz(i + 1) < matriz(i) Then
                x = matriz(i + 1)
                matriz(i + 1) = matriz(i)
                matriz(i) = x
                lsaux = i
            End If
        Next
        ls = lsaux
    Wend

'Visualiza diagonales
    x = 4
    For i = 0 To 24 Step 6
        Label1(i).Caption = matriz(i)
        Label1(i + x).Caption = matriz(i + x)
        x = x - 2
    Next
End Sub

Se necesita un arreglo de 25 labels en el Form.

          Saludos.

Me gusta tokes, me gusta, y sin nada rebuscado ni funciones inservibles del VB en este caso cuando se pedía exactamente eso

Lo que sí algunas correciones, está de más que las variables las declares como as long ya que como mucho serán as byte (hasta 255 es el máximo, y en este caso el máximo será de 30 así que alcanza y sobra)

Por otro lado si puedes tomarte la costumbre de usar Do-Loop en vez de While-Wend, mejor

Me gusta que esté comentarizado. Falta usar procedimientos y funciones para cada cosa, el llenado, ordenamiento y mostrado se debían hacer con procedimientos y para verificar que no se repite ningún elemento, una función. Lo mismo para intercambiar los valores, podrías usar un procedimientos Swap que los intercambie, el objetivo es hacer el código lo más simple y optimizado posible, y con la menor cantidad de líneas posible, haciendo uso de la programación en si, no del lenguaje

De todas formas fue el que más se aproximó, y si lo pueden comentarizar, mejor, no es mala costumbre, de todas maneras a ver quienes siguen, y una vez terminado se agregarán más y de mayor dificultad ;D siempre y cuando el tiempo lo haga posible :laugh:



Título: Re: [Ejercicio] Aca tienen un ejercicio para practicar
Publicado por: TGa. en 5 Septiembre 2010, 02:57 am
Hola!! aqui les dejo mi code...
aclaro que soy principiante... me conformo solo con que funcione.

Código
  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4.    Dim n               As Byte
  5.    Dim Repetido        As Byte
  6.    Dim Numero(24)      As Byte
  7.    Dim i               As Byte
  8.    Dim Ordenar         As Boolean
  9.    Dim Aux             As Byte
  10.  
  11. '//Generar los numeros aleatorios no repetidos
  12.    Randomize Timer
  13.    For i = 0 To 24
  14.        n = Rnd * 30
  15.        If i = 0 Then
  16.            Numero(i) = n
  17.        Else
  18.            Repetido = i
  19.            Do
  20.                Repetido = Repetido - 1
  21.                If Numero(i) = Numero(Repetido) Then
  22.                    n = Rnd * 30
  23.                    Numero(i) = n
  24.                    Repetido = i
  25.                End If
  26.            Loop Until Repetido = 0
  27.        End If
  28.    Next i
  29.  
  30. '//Ordenar de menor a mayor
  31.    Ordenar = True
  32.    Do While Ordenar = True
  33.        Ordenar = False
  34.        For i = 0 To 23
  35.            If Numero(i + 1) < Numero(i) Then
  36.                Aux = Numero(i)
  37.                Numero(i) = Numero(i + 1)
  38.                Numero(i + 1) = Aux
  39.                Ordenar = True
  40.            End If
  41.        Next i
  42.    Loop
  43.  
  44. '//Cargar la matriz
  45.    For i = 0 To 24
  46.        If i = 0 Or i = 4 Or i = 6 Or i = 8 Or i = 12 Or i = 16 Or i = 18 Or i = 20 Or i = 24 Then
  47.            Label1(i).Caption = Numero(i)
  48.        End If
  49.    Next i
  50. End Sub