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:
Y en caso de que tipo sea falso?
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!!!
Yo creo que más o menos ya lo pille.
A final de esta semana intento algo que tengo examenes... :-\
DoEvents! :P
Pero en todos los ej pusiste verdadero :xD
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!!!
Ahhh cierto, no vi la barra de desplazamiento (no me acostumbro a verla) :xD
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
HOLA!!!
Que bueno el primer codigo!
Y, no me extraña que viniendo de Lea me gane en velocidad :-\.
GRACIAS POR LEER!!!
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!!!
Tengo aún más examenes... :-( :¬¬
Ya lo haré cuando pueda.
DoEvents! :P
Cita de: 79137913 en 12 Enero 2011, 14:28 PM
Bueno... parece que no va a agregarse nadie mas
No te creas algunos tenemos unos contratiempos ( un servidor en la facultad ).
Dulces Lunas!¡.
HOLA!!!
Black:
Perdon :P.
Cita de: BlackZeroX▓▓▒▒░░ en 13 Enero 2011, 07:20 AM
( un servidor en la facultad ).
:o Que le paso al server?
GRACIAS POR LEER!!!
CitarQue le paso al server?
:xD :laugh:
Se refiere a él mismo:
Citaryo opino que sí
=
Citarun servidor opina que sí
DoEvents! :P
HOLA!!!
XD bueno igual no entendi :P
En un rato posteo el code que ya lo tengo bastante bien.
GRACIAS POR LEER!!!
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!!!