Título: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 10 Enero 2011, 16:57 pm
HOLA!!! Este es el primer Reto que creo, no es muy dificil, pero para pasar el rato va. Bueno, el Reto consiste en: Crear una funcion con esta estructura Private Function Cuenta_Circular7913(N&, M() As Integer, TIPO As Boolean)
En la variable N no aceptara numeros que no sean pares o mayores a 180 o menores a 2. La funcion devuelva estas matrices: Cuenta_Circular7913(2, Matriz, Verdadero) : 7 1 9 4 0 2 1 3 3
Cuenta_Circular7913(4, Matriz, Verdadero) : 7 1 2 3 9 12 7 13 9 4 11 16 0 14 5 10 1 15 3 6 1 9 8 7 3
Cuenta_Circular7913(6, Matriz, Verdadero) : 7 1 2 3 4 5 9 20 7 21 22 23 9 6 19 32 7 33 9 24 7 18 31 36 0 34 25 8 17 30 1 35 3 26 9 16 1 29 28 27 3 10 1 15 14 13 12 11 3
Cuenta_Circular7913(8, Matriz, Verdadero) : 7 1 2 3 4 5 6 7 9 28 7 29 30 31 32 33 9 8 27 48 7 49 50 51 9 34 9 26 47 60 7 61 9 52 35 10 25 46 59 64 0 62 53 36 11 24 45 58 1 63 3 54 37 12 23 44 1 57 56 55 3 38 13 22 1 43 42 41 40 39 3 14 1 21 20 19 18 17 16 15 3
Cuenta_Circular7913(2, Matriz, Falso) : 7 1 9 4 0 2 1 3 3
Cuenta_Circular7913(4, Matriz, Falso) : 7 1 2 3 9 15 7 4 9 5 14 16 0 8 6 13 1 12 3 7 1 11 10 9 3
Cuenta_Circular7913(6, Matriz, Falso) : 7 1 2 3 4 5 9 32 7 6 7 8 9 10 31 35 7 9 9 15 11 30 34 36 0 18 16 12 29 33 1 27 3 17 13 28 1 26 25 24 3 14 1 23 22 21 20 19 3
Cuenta_Circular7913(8, Matriz, Falso) : 7 1 2 3 4 5 6 7 9 55 7 8 9 10 11 12 9 17 54 60 7 13 14 15 9 24 18 53 59 63 7 16 9 29 25 19 52 58 62 64 0 32 30 26 20 51 57 61 1 48 3 31 27 21 50 56 1 47 46 45 3 28 22 49 1 44 43 42 41 40 3 23 1 39 38 37 36 35 34 33 3
GRACIAS POR LEER:
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: raul338 en 10 Enero 2011, 19:32 pm
Y en caso de que tipo sea falso?
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 10 Enero 2011, 19:36 pm
HOLA!!!
@Raul: Segun sea verdadero o falso el tipo lo que cambia es la manera de organizar los numeros.
Osea: Tipo = false seria Tipo1 y Tipo = true seria Tipo2
Para ver que tipo de organizacion tiene el tipo 1 y 2 estan los ejemplos.
P.D: Me voy a la playa, asi que recien mañana voy a poder responder si hay alguna duda, me quedo 10 minutos mas.
GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: Psyke1 en 10 Enero 2011, 20:08 pm
Yo creo que más o menos ya lo pille. A final de esta semana intento algo que tengo examenes... :-\
DoEvents! :P
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: raul338 en 10 Enero 2011, 22:01 pm
Pero en todos los ej pusiste verdadero :xD
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 10 Enero 2011, 22:21 pm
HOLA!!! Manana me conecto(perdon por la enie, estoy en el celular) @Raul:Que raro, los primeros 4 ejemplos son con verdadero y los ultimos 4 con falso fijate(ultimos 4): Cuenta_Circular7913(2, Matriz, Falso) : 7 1 9 4 0 2 1 3 3
Cuenta_Circular7913(4, Matriz, Falso) : 7 1 2 3 9 15 7 4 9 5 14 16 0 8 6 13 1 12 3 7 1 11 10 9 3
Cuenta_Circular7913(6, Matriz, Falso) : 7 1 2 3 4 5 9 32 7 6 7 8 9 10 31 35 7 9 9 15 11 30 34 36 0 18 16 12 29 33 1 27 3 17 13 28 1 26 25 24 3 14 1 23 22 21 20 19 3
Cuenta_Circular7913(8, Matriz, Falso) : 7 1 2 3 4 5 6 7 9 55 7 8 9 10 11 12 9 17 54 60 7 13 14 15 9 24 18 53 59 63 7 16 9 29 25 19 52 58 62 64 0 32 30 26 20 51 57 61 1 48 3 31 27 21 50 56 1 47 46 45 3 28 22 49 1 44 43 42 41 40 3 23 1 39 38 37 36 35 34 33 3
GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: raul338 en 10 Enero 2011, 23:27 pm
Ahhh cierto, no vi la barra de desplazamiento (no me acostumbro a verla) :xD
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: LeandroA en 11 Enero 2011, 08:45 am
no tiene las comprobaciones de si es Par y mayor a 2 y menor a 180 pero bueno eso ya lo tenemos por sabido. Private Function Leandro_Cuenta_Circular7913(N&, m() As Integer, TIPO As Boolean) Dim Max As Long Dim X1 As Long Dim X2 As Long Dim Y1 As Long Dim Y2 As Long Dim lCont As Long Dim I As Long Dim j As Long Dim Mitad As Long Max = N * N ReDim m(0 To N, 0 To N) If TIPO Then X2 = N Y2 = N Do While lCont < Max m(X1, Y1) = 7 X1 = X1 + 1 For I = X1 To N - X1 lCont = lCont + 1 m(I, Y1) = lCont Next m(I, Y1) = 9 Y1 = Y1 + 1 For I = Y1 To N - Y1 lCont = lCont + 1 m(X2, I) = lCont Next m(X2, I) = 3 X2 = X2 - 1 For I = X2 To X1 Step -1 lCont = lCont + 1 m(I, Y2) = lCont Next m(I, Y2) = 1 Y2 = Y2 - 1 For I = Y2 To Y1 Step -1 lCont = lCont + 1 m(X1 - 1, I) = lCont Next Loop Else Mitad = N / 2 For I = 0 To Mitad - 1 m(X1, I) = 7 X1 = X1 + 1 For j = X1 To N - X1 lCont = lCont + 1 m(j, I) = lCont Next m(j, I) = 9 Next For I = N To Mitad + 1 Step -1 Y1 = Y1 + 1 For j = Y1 To N - Y1 lCont = lCont + 1 m(I, j) = lCont Next m(j, I) = 3 Next For I = N To Mitad + 1 Step -1 Y2 = Y2 + 1 For j = N - Y2 To Y2 Step -1 lCont = lCont + 1 m(j, I) = lCont Next m(j, I) = 1 Next For I = 0 To Mitad - 1 X2 = X2 + 1 For j = N - X2 To X2 Step -1 lCont = lCont + 1 m(I, j) = lCont Next Next End If End Function
Option Explicit Private Sub Form_Load() Dim X As Long, Y As Long Dim m() As Integer Dim N As Long N = 8 Leandro_Cuenta_Circular7913 N, m, False For Y = 0 To N For X = 0 To N Debug.Print m(X, Y), Next Debug.Print Next Debug.Print vbCrLf Leandro_Cuenta_Circular7913 N, m, True For Y = 0 To N For X = 0 To N Debug.Print m(X, Y), Next Debug.Print Next End Sub
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 11 Enero 2011, 16:03 pm
HOLA!!!
Que bueno el primer codigo! Y, no me extraña que viniendo de Lea me gane en velocidad :-\.
GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 12 Enero 2011, 14:28 pm
HOLA!!!
Bueno... parece que no va a agregarse nadie mas, falta Mr. Frog.... :silbar: Mañana posteo mi codigo, le pisa los talones al de Lea :P.
Espero.
GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: Psyke1 en 12 Enero 2011, 14:59 pm
Tengo aún más examenes... :-( :¬¬ Ya lo haré cuando pueda.
DoEvents! :P
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: BlackZeroX en 13 Enero 2011, 07:20 am
Bueno... parece que no va a agregarse nadie mas
No te creas algunos tenemos unos contratiempos ( un servidor en la facultad ). Dulces Lunas!¡.
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 13 Enero 2011, 12:12 pm
HOLA!!! Black: Perdon :P. ( un servidor en la facultad ).
:o Que le paso al server? GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: Psyke1 en 13 Enero 2011, 13:12 pm
Que le paso al server? :xD :laugh: Se refiere a él mismo: yo opino que sí = un servidor opina que sí DoEvents! :P
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 13 Enero 2011, 13:52 pm
HOLA!!!
XD bueno igual no entendi :P
En un rato posteo el code que ya lo tengo bastante bien.
GRACIAS POR LEER!!!
Título: Re: [RETO] Matriz de Cuenta Circular 7913
Publicado por: 79137913 en 13 Enero 2011, 15:30 pm
HOLA!!! Mi codigo: Private Function Cuenta_Circular7913(N&, m() As Integer, TIPO As Boolean) 'TIPO: FALSE = BLOQUE, TRUE = ESPIRAL Dim X As Long Dim Y As Long Dim MEDIO As Long ' N/2 Dim CT As Long 'If N Mod 2 <> 0 Then Exit Function 'If N > 180 Then Exit Function 'If N < 2 Then Exit Function ReDim m(N, N) MEDIO = N / 2 For X = MEDIO + 1 To N m(N - X, N - X) = 7 m(X, N - X) = 9 m(N - X, X) = 1 m(X, X) = 3 Next If TIPO Then 'ESPIRAL Dim SIGUIENTE As Long Dim SIGUIENTE_2 As Long 'SIGUIENTE * 2 Dim SIGUIENTE_3 As Long 'SIGUIENTE * 3 For Y = 0 To MEDIO CT = CT + SIGUIENTE_3 SIGUIENTE = N - (Y * 2) - 1 SIGUIENTE_2 = SIGUIENTE * 2 SIGUIENTE_3 = SIGUIENTE * 3 For X = (Y + 1) To N - (Y + 1) CT = CT + 1 m(X, Y) = CT m(N - Y, X) = CT + SIGUIENTE m(N - X, N - Y) = CT + SIGUIENTE_2 m(Y, N - X) = CT + SIGUIENTE_3 Next Next Else 'TRIANGULAR Dim MEDIO2 As Long 'MEDIO ^ 2 Dim MEDIO2_2 As Long 'MEDIO2 * 2 Dim MEDIO2_3 As Long 'MEDIO2 * 3 MEDIO2 = MEDIO * MEDIO MEDIO2_2 = MEDIO2 * 2 MEDIO2_3 = MEDIO2 * 3 For Y = 0 To MEDIO For X = (Y + 1) To N - (Y + 1) CT = CT + 1 m(X, Y) = CT m(N - Y, X) = CT + MEDIO2 m(N - X, N - Y) = CT + MEDIO2_2 m(Y, N - X) = CT + MEDIO2_3 Next Next End If End Function
TEST: "TEST HECHO POR 79137913" Cuenta_Circular7913(180, Matriz, False) : 0,456 msec Leandro_Cuenta_Circular7913(180, Matriz, False) : 0,522 msec Cuenta_Circular7913(180, Matriz, True) : 0,424 msec Leandro_Cuenta_Circular7913(180, Matriz, True) : 0,398 msec GRACIAS POR LEER!!!
|