Título: No Puedo poner los for que me da la gana Publicado por: llegaraprogramador en 12 Junio 2010, 00:51 am Cuando llega el codigo al algoritmo de la burbuja, no me ordena los vaores de la matriz, no puedo poner muchos for, esa es la pregunta.
Un salduo Gracias Private Sub Command1_Click() Dim numescaños As Double numescaños = Val(Text3.Text - 1) Dim temp, n As Double Dim hasta As Double Dim m As Double n = Val(4 * (numescaños + 1)) Dim i, j As Double ReDim matriz(numescaños, 3) ReDim vector(n) Dim votos(3) As Long m = 0 matriz(0, 0) = Text1(0).Text matriz(0, 1) = Text1(1).Text matriz(0, 2) = Text1(2).Text matriz(0, 3) = Text1(3).Text vector(0) = Text1(0).Text vector(1) = Text1(1).Text vector(2) = Text1(2).Text vector(3) = Text1(3).Text minimo = -3 For i = 1 To numescaños minimo = minimo + 3 For j = 0 To 3 dimension = Val(i + j + minimo + 3) matriz(i, j) = Val(matriz(0, j) / (i + 1)) vector(dimension) = Val(matriz(0, j) / (i + 1)) 'MsgBox (matriz(i, j)) Next Next For z = 0 To n - 1 For x = 0 To n If vector(x) > vector(x + 1) Then temp = vector(x) vector(x + 1) = vector(x) vector(x) = temp End If Next x Next z For a = 0 To n - 1 MsgBox (vector(a)) Next hasta = vector(numescaños) MsgBox (hasta) MsgBox (hasta) For t = 0 To 3 votos(t) = 0 Next For x = 0 To numescaños For j = 0 To 3 If matriz(x, j) > hasta Then votos(j) = Val(votos(j) + 1) k = k + 1 Else End If Next Next MsgBox (k) For z = 0 To 3 MsgBox (votos(z)) Next End Sub Título: Re: No Puedo poner los for que me da la gana Publicado por: Shell Root en 12 Junio 2010, 00:56 am 1. No entendí un carajo. Obviamente puedo poner todos los FOR que se te de la gana, la cuestión es el motivo de usar tantos. Por ejemplo:
Código
2. Pon el código entre la etiqueta correspondiente. 3. Que quieres hacer? Título: Re: No Puedo poner los for que me da la gana Publicado por: BlackZeroX en 12 Junio 2010, 01:07 am Cuando llega el codigo al algoritmo de la burbuja: Aqui tienes uno mas rapido: Código:
y aqui uno por parte de LeandroA Código:
PD.: Usa Geshi code=vb, Ordena tu Codigo para que sea mas legible. seguro no puedes agregar muchos For Next por que no as cerrado algun For!¡. Dulce Infieno Lunar!¡. Título: Re: No Puedo poner los for que me da la gana Publicado por: Shell Root en 12 Junio 2010, 01:45 am Todo eso para ordenar por burbuja?
Código
Título: Re: No Puedo poner los for que me da la gana Publicado por: BlackZeroX en 12 Junio 2010, 01:49 am por hay lei que Código
Es mas rapido que Código
Ya que Next buscaria el for que invoca al contador z Dulce Infierno Lunar!¡, Título: Re: No Puedo poner los for que me da la gana Publicado por: Shell Root en 12 Junio 2010, 02:00 am Interesting donde lo leiste, igual yo no lo uso, solo los puse para identificar la cantidad y cierre de FOR's
Título: Re: No Puedo poner los for que me da la gana Publicado por: BlackZeroX en 12 Junio 2010, 07:08 am Interesting donde lo leiste, igual yo no lo uso, solo los puse para identificar la cantidad y cierre de FOR's yo hago algo similar solo que enlugar de poner la variable contador porgo la expresion xP Código
Aqui un codigo de Prueva para lo del For ... Next (Aun que no estoy muy convensido) Código
P.D.: Creo que lo vi en VBSpeed. Dulce Infierno Lunar!¡. Título: Re: No Puedo poner los for que me da la gana Publicado por: llegaraprogramador en 12 Junio 2010, 10:47 am Este programa es para calcular los votos de cuatro partidos polítocos por la lei de d´hont http://www.elmundo.es/elecciones2000/cifras/dhont.html, para realizar esta tarea tengo que hacer division de los votos por cada escaña es decir:
El indice de partidos y escaños empieza por 0 para que sea mas facil de orientarse en una matriz Partido A: 60 VOTOS PARTIDO B: 100 VOTOS PARTIDO C: 400 VOTOS PARTIDO D: 200 VOTOS En cada escaño se van haciendo sucesivas divisiones. Partidos/Escaños 0 (Escaño1) 1 (Escaño2) 2 (Escaño 3) 3 (Escaño 4) 0 (A) 60 30 20 15 1 (B) 100 50 16,3 25 2 (C) 400 200 133,33 100 3 (D) 200 100 66,6 50 Se cogen los valores mas altos de todo el array, hasta el numero de escaños que quieras. En el ejemplo de arriba 400,200,200,133,3 Como lo quiero hacer yo, creo una matriz de dos dimensiones, los valores del primer escaño ya los pongo directamente sin bucle, despues con un bucle for anidadado hago las sucesivas divisiones para los demas escaños For i = 1 To numescaños minimo = minimo + 3 For j = 0 To 3 dimension = Val(i + j + minimo + 3) matriz(i, j) = Val(matriz(0, j) / (i + 1)) vector(dimension) = Val(matriz(0, j) / (i + 1)) 'MsgBox (matriz(i, j)) Next Next ademas creo otra matriz pero esta vez unidireccional para despues ordenarlos, es decir una matriz de 16 dimensiones para el ejemplo anterior. Los cuatro primeros valores de esa matriz tambien son introducidos manualmente. Pero despues para introducir las dimensiones al mismo tiempo que la matriz de dos dimensiones hago esto minimo = -3 For i = 1 To numescaños minimo = minimo + 3 For j = 0 To 3 dimension = Val(i + j + minimo + 3) matriz(i, j) = Val(matriz(0, j) / (i + 1)) vector(dimension) = Val(matriz(0, j) / (i + 1)) para enterdo seria asi que hace el bucle con la matriz de dos dimensiones 10= 1 + 3 +0 20= 2 +3 +3 30=3 + 3 + 6 11= 2 + 3 + 0 21=3 + 3 +3 31= 4 + 3 +6 12= 3 + 3+ 0 22=4 + 3 + 2 32 = 5 + 3 + 6 13= 4 + 3 +0 23= 5 + 3 + 3 33= 6 + 3 +6 despues con un algorimo de ordenamiento, por ejemplo el de burbuja pretendo ordenar esa matriz unidirecional para 15 elementos, posteriormente cogeria el valor que coincide con la variable numdeescaños hasta = vector(numescaños) Con unos bucles for anidados pretendo hacer comparar todo el array de dos dimensiones con el valor hasta anteriormnete calculado, los valores iguales o mayores que los introduzca a otro array con un contador. La variable es para saber si conto el numero de escaños que debia, hay bastantes msgbox por todo el programa, son para saber si hace lo que tiene que hacer Un saludo Gracias Espero que entienedan el funcionamiento del programa Todo el problema viene cuando empieza a ordenar en el algoritmode burbuja, coge valores atípicos en el segundo valore For x = 0 To numescaños For j = 0 To 3 If matriz(x, j) >= hasta Then votos(j) = Val(votos(j) + 1) k = k + 1 Else End If Next Next Private Sub Command1_Click() Dim numescaños As Double numescaños = Val(Text3.Text - 1) Dim temp, n As Double Dim hasta As Double Dim m As Double n = Val(4 * (numescaños + 1)) Dim i, j As Double ReDim matriz(numescaños, 3) ReDim vector(n) Dim votos(3) As Long m = 0 matriz(0, 0) = Text1(0).Text matriz(0, 1) = Text1(1).Text matriz(0, 2) = Text1(2).Text matriz(0, 3) = Text1(3).Text vector(0) = Text1(0).Text vector(1) = Text1(1).Text vector(2) = Text1(2).Text vector(3) = Text1(3).Text minimo = -3 For i = 1 To numescaños minimo = minimo + 3 For j = 0 To 3 dimension = Val(i + j + minimo + 3) matriz(i, j) = Val(matriz(0, j) / (i + 1)) vector(dimension) = Val(matriz(0, j) / (i + 1)) 'MsgBox (matriz(i, j)) Next Next For z = 0 To n - 1 For x = 0 To n If vector(x) > vector(x + 1) Then temp = vector(x) vector(x + 1) = vector(x) vector(x) = temp End If Next x Next z For a = 0 To n - 1 MsgBox (vector(a)) Next hasta = vector(numescaños) MsgBox (hasta) MsgBox (hasta) For t = 0 To 3 votos(t) = 0 Next For x = 0 To numescaños For j = 0 To 3 If matriz(x, j) > hasta Then votos(j) = Val(votos(j) + 1) k = k + 1 Else End If Next Next MsgBox (k) For z = 0 To 3 MsgBox (votos(z)) Next End Sub Título: Re: No Puedo poner los for que me da la gana Publicado por: llegaraprogramador en 17 Junio 2010, 15:24 pm Alguien me ayuda a arreglar esto
Título: Re: No Puedo poner los for que me da la gana Publicado por: Dreamaker en 17 Junio 2010, 15:51 pm Te recomiendo que escribas tu código en GeSHi porque sino resulta ilegible el código y nadie le hará la gana de leerlo
Un poco más prolijo los posts señores.. :¬¬ Título: Re: No Puedo poner los for que me da la gana Publicado por: llegaraprogramador en 17 Junio 2010, 18:07 pm Private Sub Command1_Click() Dim numescaños As Double numescaños = Val(Text3.Text - 1) Dim temp, n As Double Dim hasta As Double Dim m As Double n = Val(4 * (numescaños + 1)) Dim i, j As Double ReDim matriz(numescaños, 3) ReDim vector(n) Dim votos(3) As Long m = 0 matriz(0, 0) = Text1(0).Text matriz(0, 1) = Text1(1).Text matriz(0, 2) = Text1(2).Text matriz(0, 3) = Text1(3).Text vector(0) = Text1(0).Text vector(1) = Text1(1).Text vector(2) = Text1(2).Text vector(3) = Text1(3).Text minimo = -3 For i = 1 To numescaños minimo = minimo + 3 For j = 0 To 3 dimension = Val(i + j + minimo + 3) matriz(i, j) = Val(matriz(0, j) / (i + 1)) vector(dimension) = Val(matriz(0, j) / (i + 1)) 'MsgBox (matriz(i, j)) Next Next For z = 0 To n - 1 For x = 0 To n If vector(x) > vector(x + 1) Then temp = vector(x) vector(x + 1) = vector(x) vector(x) = temp End If Next x Next z For a = 0 To n - 1 MsgBox (vector(a)) Next hasta = vector(numescaños) MsgBox (hasta) MsgBox (hasta) For t = 0 To 3 votos(t) = 0 Next For x = 0 To numescaños For j = 0 To 3 If matriz(x, j) > hasta Then votos(j) = Val(votos(j) + 1) k = k + 1 Else End If Next Next MsgBox (k) For z = 0 To 3 MsgBox (votos(z)) Next Título: Re: No Puedo poner los for que me da la gana Publicado por: Dreamaker en 17 Junio 2010, 18:17 pm Sabes español? Lee lo que te puse en el anterior mensaje.
|