|
3211
|
Programación / .NET (C#, VB.NET, ASP) / Re: Arrays en VB.net
|
en: 8 Marzo 2018, 22:00 pm
|
Hola, estuve siguiendo estos pasos que me comentaste y lo codifique de la siguiente manera:
Private Sub calcular() miArray(0) = 12 miArray(15) = 87 ListBox1.Items.AddRange(miArray) ... ... ... End Sub
En el diseño del formulario coloque 1 textbox, 1 boton y 1 listbox. Bien, ya agregados los numeros mediante listbox, este hace la suma y calcula el promedio,
pero al mostrarlo en el listbox aparecen varios 0 y otros numeros al parecer aleatorios.
Claro... si lees bien el código en la función calcular, sobran las 2 primeras líneas... yo las puse de ejemplo: miArray(0) = 12 miArray(15) = 87 Solución: borra esas dos líneas (siempre lee el código y trata de entenderlo, para que no pase eso, copiar y pegar sin más no está bien). En cuanto a los valores, 0 y otros... te has comido el código del evento 'Validating'... luego no existe ninguna validación, el evento 'validated', se lleva a cabo en ausencia de su correspondiente 'validating'... Solución: Incluye el código del evento Validating
|
|
|
3212
|
Programación / Programación C/C++ / Re: Creacion de matriz
|
en: 8 Marzo 2018, 21:23 pm
|
Tengo que crear una matriz de numeros ( 1 a 6) con un ancho X y un largo Y en tu ejemplo 6x4, x=6 y=4, ok... El array Z0 debe tener un 5 y el Z-1 un 6. Entonces quedaría algo asi: XXX5XX XXXXXX XXXXXX 6XXXXX Elige al azar una columna en sendas filas y la rellenas con el susodcho valor. n = Random(entre 0 y x-1) Array(0, n) = 5 // línea 0 posición n, un 5
n = Random(entre 0 y x-1) Array(y-1, n) = 6 // linea 3, posicion n, un 6. La siguiente condición es que en Zx debe existir un 2 y en Zx+1 un 3. X2X5XX X3XX2X XXXX32 6XXXX3 Esta parte, no acabo de entenderlo. No sé a que llamas Zx, mirando el array... ¿una fila, una columna, una columna de una fila, de varias? Vale, tras mirarlo más veces, creo entender que lo que tratas de hacer es crear un 2 en cada línea excepto la última y asignar un 3 en la misma columna pero en la siguiente fila. Si es así, este sería el pseudocódigo: bucle para k desde 0 hasta y-2 hacer n = random(entre 0 y x-1) repetir mientras array(k,n) distinto de 0 // no queremos que sobrescriba el 5 ni el 6
Array(k,n)=2 Array(k+1, n)=3 siguiente en bucle
Y la ultima condición es que : Entre 2/3/6/5 solo puede haber 1. X215XX X3112X XXXX32 611113 Entiendo que entre 2 y 2,3,5,6; entre 3 y 2,3,5,6; entre 5 y 2,3 y entre 6 y 2,3. Pero no entre 5 y 6, porque no están en la misma línea (ni pueden estarlo), Así como tampoco 2 cincos ni 2 seis. bucle para k desde 0 a y-1 // por cada linea // buscar punto de comienzo bucle para j desde 0 a x-2 // por cada columna Si array(k,j) = 2,3,5 ó 6 luego //buscamos un valor en la fila (2,3,5,6) ini= j // y lo recordamos. salir del bucle fin si siguiente en bucle // buscar punto final bucle para j desde ini+1 a x-1 Si array(k,j) = 2,3 ó 5 luego buscamos un valor en la fila (2,3,5,6) fin= j salir del bucle fin si siguiente en bucle
// rellenar entre medias (de inicio y final)... bucle para j desde (ini +1) hasta (fin-1) array(k, j) = 1 siguiente en bucle siguiente en bucle El código en esta sección se puede optimizar (yo lo dejo así por claridad), por ejemplo: - recorriendo el bucle segundo desde el final hacia atrás... - mientras no se encuentre el valor final, escribir YA el 1, haciendo innecesario el bucle final. - en vez de salir de un bucle, anidar dentro de él el siguiente bucle (aunque en líea ganan en claridad). Todo lo demas que no fue seteado pueden ser 1 ó 4 Se supone que lo que no tiene 'valor' es 0... es decir que inicialmente el contenido del array era todos ceros. bucle para k desde 0 a y-1 // por cada linea bucle para j desde 0 a x-1 // por cada columna Si Array(k,j) = 0 n= random(entre 0 y 1) //elegir 1 de 2 opciones n = ((n * 3) +1) // Si False = 1, si TRUE=4 Array(k,j) = n fin si siguiente en bucle siguiente en bucle
|
|
|
3213
|
Foros Generales / Noticias / Re: La Liga está buscando un “técnico de antipiratería digital” en LinkedIn
|
en: 7 Marzo 2018, 22:05 pm
|
Ganan tan poco que tienen que exprimir el limón digo el balón, hasta reventarlo...
Precisamente ahora que ya hay cadenas que han rechazado adquirir derechos de retransmisión porque los precios son inasumibles, y saben que sus clientes no podrían ni querrían pagar tales precios.
Opino que el fútbol está sobrevalorado, y si me apuran hasta corrompido... (con tanta idiotez de 'ultras' de tal o cual equipo... parece que olvidan que los 'clubs de fútbol' hace más de 20 años que dejaron ser "clubs deportivos" y que son empresas cuya misión principal es hacer dinero...). Intento imaginarme 'ultras de movistar' peleando contra 'ultras de vodafone', o 'ultras de Ford' contra 'ultras de Renault'... y me pasa lo mismo, lo veo terriblemente idiota, porpio de gente sin cerebro.
|
|
|
3214
|
Foros Generales / Noticias / Re: Alexa se está riendo de la gente sin que se lo pidan
|
en: 7 Marzo 2018, 21:57 pm
|
Ése ha sido siempre el temido suceso en la robótica (con sistemas artificiales)... que sin venir a cuento, si debían coser una arteria durante una operación, le rebane el cuello al paciente...  En la vda real, siempre cabe la posibilidad de un médico loco, pero en un robot, si le pasa a uno, solo a uno, siempre se considerará un error imperdonable. en un ser humano, entenderemos que está poseído de maldad, locura, etc... y en general se sabe que eso afectará a ese médico, no que contagiará al resto de colegas del hospital, con un robot, el miedo es que el problema afecte a toda una serie (como pasa a los vehículos con algún defecto de fábrica). En fin, siguen siendo juguetes caros... les quedan muchas lunas para tener fiabilidad.
|
|
|
3216
|
Informática / Hardware / Re: Errores reparables PC
|
en: 7 Marzo 2018, 21:42 pm
|
Puedes cambiar los cables de power y reset con los de led, según lo hagas no arrancará el equipo... solo una comprobación visual al apartado puede revelar el 'error'. También puedes cambiar la pila por una agotada.
Remplaza un cable de datos del disco duro, por otro dañado (que le falte algun pin/contacto)...
Incluso cambiar el conector del ventlador de la CPU a uno del chasis, que no tenga sensor/control de velocidad, puede resultar que si altiempo has fijadoen la BIOS que apague con una temperatura muy baja, así ocurrirá, porque aunque el sistema detecte que se sobrecalienta, la orden de acelerar el ventilador, para bajar temperatura, no surtirá efecto...
En fin, todo lo que pienses al respecto es de tipo 'manazas', algo distinto a la realidad... en la realidad algo falla y en apariencia todo está bien, luego descubrir fallos reales de fallos provocados difiere, pero bueno como práctica siempre vale.
|
|
|
3217
|
Foros Generales / Noticias / Re: Un niño de dos años bloquea el iPhone de su madre por 47 años
|
en: 7 Marzo 2018, 18:24 pm
|
Realmente ridículo...
Un bloqueo, debería limitarse a que si alcanza una cifra de espera límite (pongamos una semana, un mes de espera), no aumentarlo en lo sucesivo, y simplemente negar el procesado de cualquier intento posterior de acceso, al alcanzar dicho límite. Y si restados x días, se produce un nuevo intento de acceso fallido, de nuevo llevarlo al límite... Eso basta y sobra, no hay un botón nuclear tras el teléfono de cada persona... Incluso yendo más lejos, dejaría que cada persona decida él mismo el límite que establece de bloqueo entre un rango elegible, conforme a los 'secretos' que guarde y su propio nivel de paranoia.
...y eso son diseños de gente trabajando en Apple, vaya castaña de "profesionales". Se merecen más llamarles "chapuzas".
|
|
|
3219
|
Foros Generales / Noticias / Re: Microsoft da la espalda a Office 2003: actualiza, o no podrás usar archivos ...
|
en: 7 Marzo 2018, 06:13 am
|
No estoy de acuerdo en casi nada...
Si alzan la mirada y miran un poco lejos, pueden hacer mejoras cosas, pero programan solo en vista al año que están y que dure pocos años...porqué?... porque les interesan los cambios permanentemente, viven de ello quieren venderte cada año, un vaso para beber, a pesar de que te baste con el del año pasado.
Si algo no caduca, nada mejor que forzarlo a caducar. Flexibilidad, ninguna, no les interesa... Flexibilidad es hacer compatible los programas nuevos con los formatos viejos...
Y la cuota de mercado, es porque resulta imposible ya adquirir equipos nuevos montando windows-Xp, o windows-7... A ninguna empresa (con solera), e hace ni pizca de gracia tener que comprar de nuevo equipos y software cada pocos años, sumando a todo ello, el tiempo perdido en la curva de aprendizaje de sus trabajadores... La máxima en la mayoría de las empresas, es que: "Si algo funciona y funciona bien, no lo cambies"... solo cambia el que quiere presumir de 'estar a al última', vamos prácticamente las empresas tecnológicas, las que viven precisamente de crear y hacer funcionar dicha tecnología...
Las razones son de sobra conocidas, la cuestión es porqué una y otra vez, acaban haciendo siempre lo mismo. Los marineros llevan milenios usando los mismos nudos... funcionan, no tienen que caducar e inventar nuevos nudos, solo para obligar a comprar nuevas cuerdas... Se pueden mejorar las cuerdas... pero no tocar los nudos.
Microsoft se muere por forzar a todos los usuarios que siguen usando versiones antiguas de Windows para que migren a windows-10, les encantaría hacerlo de un plumazo, pero como no es ni ético ni legal, no queda otra que ir 'fastidiando' poco a poco... de forma sutil, si aguantas un embate, quizás no el siguiente o el siguiente... cuando se acumnulen demasiados, al final fuerzan el cambio... algo que solo debiera ocurrir cuando los equipos se averiaran sin arreglo.
Qué mejor que sacar un nuevo formato de lo que sea, para que los programas viejos, ya no puedan abrirlo????... es la forma sigilosa... los formatos podrían ser mucho más robustos a veces desde una década atrás, pero es su "as en la manga", lo saben desde hace más de 30 años... y tiran de él, cuando como ahora, les urge.
|
|
|
3220
|
Programación / .NET (C#, VB.NET, ASP) / Re: Arrays en VB.net
|
en: 7 Marzo 2018, 05:51 am
|
La respuesta que te ha dado Elektro es muy válida, pero para programadores con algo más de soltura. ciertamente si estás empezando y a duras penas sabes que es un array y otras estructuras, necesitarías más tiempo (posiblemente) del que dispones para ser capaz de entender y aplicar satisfactoriamente lo que te explica. A tu nivel... Declara un array de 20 elementos, un valor para contener el valor actual y un índice que refleje cuantos llevas ya acumulados en tu array... Dim miArray(0 To 19) As Object ' por ejemplo, o un tipo numérico que prefieras... si luego quieres añadir elementos uno a uno. Dim miMumero As Int32 Dim miIndice As Byte
Se supone que al menos tienes en la interfaz un textbox, un botón y un listbox... Entonces deberías usar el evento Validate del textbox... Private Sub TextBox1_Validating(... , ByVal e As CancelEventArgs) Handles textBox1.Validating Try miMumero = Integer.Parse(TextBox1.Text) TextBox1.Clear() ' es lo mismo que Textbox1.Text = "" e.Cancel = False Catch e.Cancel = True MessageBox.Show("El texto no puede ser interpretado como un número (o número entero), o bien excede el valor de un int32....", "Error...") ' puedes seleccionar el texto del control, o borrarlo... en cualquier caso el foco regresa al control textbox, para editar su contenido... End Try End Sub
Cuando escribes el texto del número en el textbox, ese control tiene el foco, luego cuando otro control intenta ganar el foco (por ejemplo cuando pulsas el botón), se genera el evento Validating del textbox, si no valida, el foco se mantiene en el textbox... (forzándolo con Cancel=True) pero si valida, se genera el evento Validated... Fíjate que ni siquiera colocamos código en el botón... aunque puede hacerse así, por supuesto. Private Sub TextBox1_Validated(sender..., e As EventArgs) Handles TextBox1.Validated miArray(miIndice) = miMumero miIndice += 1 If (miIndice < 20) Then MessageBox.Show("Número almacenado, introduzca el siguiente número...") TextBox1.Focus() Else TextBox1.Enabled = False Button1.Enabled = False Call Calcular() ' ahora que tenemos el array completo, podemos hacer el resto de cosas. End if end Sub
Te diría que crearas un algoritmo de ordenación si tuvieras más conocimientos. Aparte el Listbox tiene una propiedad Sorted, que se activa en diseño y así cuando se añada un ítem se ordena automáticamente.... pero hay un problema, y es que (si no recuerdo mal de memoria), solo ordena de menor a mayor, y tu lo precisas al revés... ...pero en realidad es más fácil... los arrays tienen un método sort... Private Sub Calcular() miArray(0) = 12 miArray(15) = 87 Array.Sort(miArray, 0, 20) ' No son precisos los 2 parámetros, si no se indican se ordena todo el array, pero los pongo, para que te des cuenta, que puedes ordenarlo parcialmente si fuera preciso. Array.Reverse(miArray) ' invertimos el orden, o bien mediante un bucle añadir elementos al listbos, uno a uno, empezando por el final del array... ListBox1.Items.AddRange(miArray) ' Si declaraste el array de tipo numérico, usa un bucle con el método Add (por ejemplo). ' Suma Dim suma As Int32 For k As Byte = 0 To 19 suma += miArray(k) Next MessageBox.Show("La suma total del array es: " & suma.ToString) ' Media, mediana, moda ??? Dim media As Single = (suma \ 20) MessageBox.Show("La media de los valores del array es: " & media.ToString) End Sub
...y bueno la validación que indicas, no sé a que te refieres, no sé qué tienes que validar, yo he validado si el texto introducido puede ser tomado como un numero entero de 32bits (ni siquiera un decimal), y lo que falte o haya quedado claro, o haya entendido mal, espero que sepas arreglarlo... tienes suficiente para resol bverlo con poco esfuerzo de tu parte.
|
|
|
|
|
|
|