Autor
|
Tema: Mis malas combinaciones :( (Leído 22,223 veces)
|
luis456
Desconectado
Mensajes: 548
|
Al ataque de nuevo jeje bueno ya ustedes saben como se frustra uno cuando no se logra hacer funcionar algo, vueltas y vueltas y nada tengo el siguiente programa que funciona bien hasta llegar a la función de combinar los numeros pero es un código de basic que quiero implementar pero no soy capaz ( como siempre) Public Class Form1 Dim maximum As Short = 99 Dim x As Integer = 0 Dim Número As Double Private TextBoxes As TextBox() = {Nothing} Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32() Private _textBox As Object Private Property ListBox1Count As Integer ReadOnly MAX As Integer = 99 Dim auxiliar As Integer Dim auxiliar1 As Integer Dim auxiliar2 As String Dim auxiliar3 As String Dim anterior As String Dim recorrer As Integer Dim recorrer1 As Integer Dim recorrer2 As Integer Dim recorrer3 As Integer Private Property Calcular As Object Private Property TextBox(ByVal TextBoxCount As Short) As Object Get Return _textBox End Get Set(ByVal value As Object) _textBox = value End Set End Property Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs) ' evitar letras If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub ReadOnly Property Num1 As Int32 Get Return CInt(TextBox1.Text) End Get End Property ReadOnly Property Num2 As Int32 Get Return CInt(TextBox2.Text) End Get End Property ReadOnly Property Num3 As Int32 Get Return CInt(TextBox3.Text) End Get End Property Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Result1 = {Num1 + 1, Num1 + 2, Num1 + 4, Num1 + 6, Num1 - 4, Num1 - 1} _ .Distinct().ToArray ' Elimino duplicados Result2 = {Num2 + 1, Num2 + 2, Num2 + 3, Num2 - 1, Num2 - 2, Num1 - 3} _ .Distinct().ToArray ' Elimino duplicados Result3 = {Num3 - 1, Num3 - 2, Num3 - 3, Num3 + 2, Num3 + 3, Num3 + 5} _ .Distinct().ToArray ' Elimino duplicados Dim Rand As New Random ' Concateno, y... ' Elimino duplicados, y... ' Selecciono los números inferiores a MAX, y... ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX. Dim Result As IEnumerable(Of Integer) = (Result1.Concat(Result2).Concat(Result3)). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand.Next(0, MAX)) End Function) ListBox1.Items.AddRange(Result.Cast(Of Object).ToArray) ' Result2--------------------------------------------------------- Dim Rand2 As New Random ' Concateno, y... ' Elimino duplicados, y... ' Selecciono los números inferiores a MAX, y... ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX. Dim Result22 As IEnumerable(Of Integer) = (Result1). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand.Next(0, MAX)) End Function) ListBox2.Items.AddRange(Result22.Cast(Of Object).ToArray) Dim Rand22 As New Random ' Concateno, y... ' Elimino duplicados, y... ' Selecciono los números inferiores a MAX, y... ' Convierto los números mayores a MAX a números aleatorios entre 0 y MAX. Dim Result222 As IEnumerable(Of Integer) = (Result2). Distinct. Select(Function(Value As Integer) Return If(Value < MAX, Value, Rand.Next(0, MAX)) End Function) ListBox3.Items.AddRange(Result222.Cast(Of Object).ToArray) End Sub ' funcion combinar la variable " resul " que contiene la cantidad de numeros a combinar (no funciona) ' esto es de basic pero es para cojer la idea :) no se como hacerlo en net For recorrer = 1 To Len(resul) auxiliar = Mid(palabra, recorrer, 1) For recorrer1 = 1 To Len(resul) auxiliar1 = Mid(palabra, recorrer1, 1) For recorrer2 = 1 To Len(resul) auxiliar2 = Mid(palabra, recorrer2, 1) For recorrer3 = 1 To Len(resul) auxiliar3 = Mid(resul, recorrer3, 1) If anterior <> auxiliar3 Then Print(auxiliar & auxiliar1 & auxiliar2 & auxiliar3) <------------mostrar esto en un lixbox End If anterior = auxiliar3 Next Next Next Next End Sub '--------------------------- limpiar texboxes Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For Each obj As Control In Me.Controls If (TypeOf obj Is TextBox) Then obj.Text = "" End If If (TypeOf obj Is GroupBox) Then For Each caja As Control In obj.Controls If (TypeOf caja Is TextBox) Then caja.Text = "" End If Next End If ListBox1.Items.Clear() ListBox2.Items.Clear() ListBox3.Items.Clear() Next End Sub End Class
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
funciona bien hasta llegar a la función de combinar los numeros pero es un código de basic que quiero implementar pero no soy capaz ( como siempre) ¿Que es exactamente lo que "falla"?, y en caso de dar error, ¿cual es el error?. saludos
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
En la parte de las combinaciones me dice que se esperaba una declaración ??? resul no esta declarado palabra no declarado de paso he visto un error que tenia y era que tenia que hacer un boton para introduce la funcion jejej Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ' funcion combinar la variable " resul " que contiene la cantidad de numeros a combinar (no funciona) ' esto es de basic pero es para cojer la idea :) no se como hacerlo en net For recorrer = 1 To Len(resul) auxiliar = Mid(palabra, recorrer, 1) For recorrer1 = 1 To Len(resul) auxiliar1 = Mid(palabra, recorrer1, 1) For recorrer2 = 1 To Len(resul) auxiliar2 = Mid(palabra, recorrer2, 1) For recorrer3 = 1 To Len(resul) auxiliar3 = Mid(resul, recorrer3, 1) If anterior <> auxiliar3 Then Print(auxiliar & auxiliar1 & auxiliar2 & auxiliar3) End If anterior = auxiliar3 Next Next Next Next End Sub
|
|
« Última modificación: 9 Agosto 2014, 21:44 pm por luis456 »
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
En la parte de las combinaciones me dice que se esperaba una declaración ???
resul no esta declarado palabra no declarado Luis, si te pido la información de un error no espero escuchar tu versión modificada del mensaje de error, sino el mensaje de error tal cual es, ¿sino como esperas que te ayudemos a depurarlo o encontremos información al respecto? (en este caso no hacia falta buscar nada, con tu explicación fue suficiente intuir el problema, pero la próxima vez quizás no sea tan intuitivo), no creo que sea tan dificil darle click derecho al error y luego darle al botón de "Copiar" para pegarlo aquí de esta manera: 'resul' is not declared. It may be inaccessible due to its protection level. Disulpa pero sabes que soy muy estricto con los detalles, proporcionar la información del error (el mensaje y el stacktrace, sin modificar) es el detalle más importante que se debería tener en cuenta cuando alguien tiene una duda. Dicho esto, el error se debe a que no has declarado ninguna variable con el nombre 'resul' ni 'palabra', si quieres solucionar el error debes declararlas ...obviamente, jeje. Dim resul As ¿? = ¿? Dim palabra As String = ""
Fuera de los Subs tienes declaradas las variables 'Result1', 'Result2' y 'Result3'. Luego en el bloque del método 'Sumar' tienes una variable 'result' declarada, la 'vida' de esta variable se termina al finalizar el método. Luego dentro del mismo bloque de 'Sumar' tienes una variable llamada 'Result22' y otra 'Result222' ¿Que lio es ese?, en serio, depeja todo ese lio de variables, colócalas al inicio del código (es decir, fuera de los subs), asígnales un nombre apropiado a cada variable para saber cual es su finalidad y así no dar lugar a equivocaciones, también podrías añadirle un pequeño comentario a cada una de las variables para dejarlo más claro incluso, y luego inizializa cada variable ahí mismo o cuando sea necesario si lo prefieres... Creo que solo tú te puedes hacerte una idea de que variables deberían ir en ' resul' y ' palabra' para poder corregir esa parte del código que mostraste. Saludos!
|
|
« Última modificación: 11 Agosto 2014, 19:41 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Bien te esplico mi proyecto jejej a ver si me hago entender, como siempre pasa uno sabe lo que quiere pero nunca logro hacerlo entender o explicar input como tu dices la variable result contiene x numeros que van desde 01 hasta el 99 pero según los resultados pueden ser menos. supongamos que que la variable contenga estos números; ( pongo solo hasta el 30 para hacerlo corto ) input 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 con estos números hay que formar grupos o combinaciones de 10 números saltando de dos en dos: salida... 01 04 07 10 13 16 19 22 25 28 02 05 08 11 14 17 20 23 26 29 03 06 09 12 15 18 21 24 27 30 04 07 10 13 16 19 22 24 28 ? <- aca rellenar con un numero dentro del rango 01 al 99 y por supuesto no se repita en la conbinacion esto es cuando se agoten los números de que tenga la variable 05 08 11 14 17 20 23 26 29 ? < igual poner numero dentro del rango y que no repita y esto hasta que acabe con el ultimo numero que seria el numero 30 30 ? ? ? ? ? ? ? ? ? ? Motrar de menor a mayor en un lisxbot saludos Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
04 07 10 13 16 19 22 24 28 ? <- aca rellenar con un numero dentro del rango 01 al 99 y por supuesto no se repita en la conbinacion esto es cuando se agoten los números de que tenga la variable 1. ¿el número del 1 al 99 del interogante debe ser aleatorio? (ej: ¿daría igual si es 5 o 95?), o por lo contrario debería seguir un orden de incremento (primero el 1, luego en el siguiente interrogante el 2, y en otro interrogante el 3, etc...) 2. ¿el número del interogante debe ser un número del 1 al 99, pero ese número además debe existir dentro de la variable Result? (y, repito lo del punto .1, ¿debe ser aleatorio?) En teoría supongo que con un For asignándole un Step de 2 e incrementando el valor de una variable que usariamos para especificar el índice del elemento inicial en cada repetición del búcle sería suficiente, pero lo de los interrogantes lo veo algo más complicado, quizás no lo sea tanto, aclárame eso y veré lo que puedo hacer. Saludos!
|
|
« Última modificación: 16 Agosto 2014, 03:32 am por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
1. ¿el número del 1 al 99 del interogante debe ser aleatorio? (ej: ¿daría igual si es 5 o 95?), o por lo contrario debería seguir un orden de incremento (primero el 1, luego en el siguiente interrogante el 2, y en otro interrogante el 3, etc...)
2. ¿el número del interogante debe ser un número del 1 al 99, pero ese número además debe existir dentro de la variable Result? (y, repito lo del punto .1, ¿debe ser aleatorio?)
En teoría supongo que con un For asignándole un Step de 2 e incrementando el valor de una variable que usariamos para especificar el índice del elemento inicial en cada repetición del búcle sería suficiente, pero lo de los interrogantes lo veo algo más complicado, quizás no lo sea tanto, aclárame eso y veré lo que puedo hacer.
Saludos!
Diossssssss son las 4 y bastante de la madrugada vengo de fiesta y estas aca jo descanza chico mañana te cuento luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
Hola no debe ser aleatorio, ya que siempre cuando se ejecute el programa siempre deben salir las mismas combinaciones salvo que cambie el imput o los numeros en la variable los números a rellenar no importa estén o no en la variable siempre y cuando no repitan en la misma combinación y estén dentro del rango establecido .y termina cuando acabe el ultimo numero de la variable Buen dia Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
los números a rellenar no importa estén o no en la variable siempre y cuando no repitan en la misma combinación Sinceramente, no se si es esto lo que andas buscando, pero es que con todo el material que se te ha ofrecido a lo largo del tiempo (incluyendo el siguiente código), creo que ya debería ser suficiente para que pudieras adaptar el código a tus necesidades haciendole los cambios que creas necesario. Bueno, a ver si esta vez es la buena, los números a rellenar no se repiten en la combinación actual, pero como siempre hay un "pero"... quizás te referías a que no se repitiera en ninguna de las combinaciones tampoco, pero eso sería imposible con un rango del 1 al 99 (ya que con los 30 números fijos de tu ejemplo y en combinaciones de 10 dígitos, sería necesario más de 99 números distintos aleatorios para rellenar los interrogantes, así que supongo que no lo habré entendido mal). Nota: En la lista Combo se va generando la combinación actual, y una vez la combinación se completa ésta se añade a la colección Combos. El código: Public Class LuisClass ReadOnly Randomizer As New Random ReadOnly FixedValues As Integer() = Enumerable.Range(1I, 30I).ToArray ' 1 to 30 ReadOnly RandomValues As Integer() = Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30 Private Sub Test() Handles MyBase.Shown Dim IndexCounter As Integer = FixedValues.First ' 1 Dim LenCounter As Integer = 0I Const NumStep As Integer = 3I Const NumLen As Integer = 10I Dim Combo As New List(Of Integer) Dim Combos As New List(Of List(Of Integer)) Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30 For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep ' 1 to 30 Step 3 Combo.Add(Num) LenCounter += 1I If LenCounter >= NumLen Then ' Esto no es necesario en este ejemplo porque siempre dará Falso, pero lo dejo aquí. Exit For End If Next ' Num If LenCounter < NumLen Then ' If LenCounter < 10 For RandomNum As Integer = 1I To (NumLen - LenCounter) Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last) Do Until Not Combo.Contains(n) n = Randomizer.Next(RandomValues.First, RandomValues.Last) Loop Combo.Add(n) Next ' RandomNum End If ' LenCounter < NumLen Debug. WriteLine(String. Join(", ", Combo )) ' Stop #End If Combos.Add(Combo) Combo.Clear() IndexCounter += 1I LenCounter = 0I Loop ' IndexCounter >= FixedValues.Last End Sub ' Test End Class
Output (lo he formateado manualmente en el editor de texto con un RegEx para añadirle los "0"): 01, 04, 07, 10, 13, 16, 19, 22, 25, 28 02, 05, 08, 11, 14, 17, 20, 23, 26, 29 03, 06, 09, 12, 15, 18, 21, 24, 27, 30 04, 07, 10, 13, 16, 19, 22, 25, 28, 08 05, 08, 11, 14, 17, 20, 23, 26, 29, 09 06, 09, 12, 15, 18, 21, 24, 27, 30, 22 07, 10, 13, 16, 19, 22, 25, 28, 03, 23 08, 11, 14, 17, 20, 23, 26, 29, 18, 19 09, 12, 15, 18, 21, 24, 27, 30, 14, 22 10, 13, 16, 19, 22, 25, 28, 17, 08, 14 11, 14, 17, 20, 23, 26, 29, 02, 24, 07 12, 15, 18, 21, 24, 27, 30, 04, 22, 13 13, 16, 19, 22, 25, 28, 20, 27, 04, 01 14, 17, 20, 23, 26, 29, 21, 09, 02, 10 15, 18, 21, 24, 27, 30, 29, 26, 08, 13 16, 19, 22, 25, 28, 11, 20, 03, 04, 10 17, 20, 23, 26, 29, 28, 02, 03, 21, 09 18, 21, 24, 27, 30, 01, 26, 13, 17, 25 19, 22, 25, 28, 20, 16, 29, 08, 21, 15 20, 23, 26, 29, 10, 09, 01, 08, 07, 05 21, 24, 27, 30, 03, 28, 23, 22, 18, 17 22, 25, 28, 14, 15, 18, 13, 29, 24, 10 23, 26, 29, 21, 13, 18, 05, 07, 22, 14 24, 27, 30, 04, 29, 17, 23, 02, 28, 25 25, 28, 24, 11, 19, 07, 21, 08, 02, 03 26, 29, 15, 09, 25, 18, 11, 28, 20, 06 27, 30, 18, 19, 03, 06, 24, 16, 21, 23 28, 14, 04, 19, 21, 18, 26, 24, 01, 03 29, 09, 08, 14, 02, 19, 28, 07, 17, 27 30, 04, 05, 01, 18, 21, 16, 11, 14, 02
|
|
« Última modificación: 18 Agosto 2014, 07:38 am por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Gracias elektro Como creo no saber nada algunas cosas ya que me da este error Error 1 No se puede encontrar el evento 'Shown'. ( edito ya lo resolví) otra cosa " leyendo el codigo donde pones Enumerable.Range(1I, 30I).ToArray ' 1 to 30
asumo que el programa lee que son números desde el 01 al 30 correlativamente ? si es así, no es la idea jejej ya que sabes que yo extraigo en el viejo programa unos resultados que varían y pueden ser 01 05 19 22 34 55 66 88 99 por ejemplo,y como no logro entender donde pongo mi variable para probarlo a ver también perdona mi ignorancia pero donde muestro los resultados estoy poniendo esto pero solo me sale " colección " ListBox1.Items.AddRange(combos.Cast(Of Object).ToArray)
gracias por tu infinita paciencia luis
|
|
« Última modificación: 18 Agosto 2014, 16:11 pm por luis456 »
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Instrucciones malas :P
Ingeniería Inversa
|
x64core
|
3
|
2,914
|
7 Diciembre 2011, 16:45 pm
por Flamer
|
|
|
Combinaciones con subrangos
.NET (C#, VB.NET, ASP)
|
luis456
|
1
|
1,686
|
25 Noviembre 2014, 12:20 pm
por Eleкtro
|
|
|
Usuarios de Yelp bombardean pizzería antigay con malas reseñas
« 1 2 3 4 5 »
Noticias
|
wolfbcn
|
47
|
11,107
|
5 Abril 2015, 03:10 am
por MinusFour
|
|
|
Mas combinaciones condicionadas
.NET (C#, VB.NET, ASP)
|
luis456
|
0
|
1,333
|
5 Abril 2016, 11:42 am
por luis456
|
|
|
Vulnerabilidades por malas practicas streaming
Bugs y Exploits
|
neftali.evando88
|
5
|
7,187
|
23 Octubre 2020, 20:44 pm
por MCKSys Argentina
|
|