elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 65
41  Programación / .NET / Re: Usar un NumericUpDown como valor de const en: 3 Agosto 2017, 19:06
Una constante, como su nombre indica es constante. Luego no puede adjudicarse ningún valor por procedimiento.

Cuando se compila el valor queda fijado... es decir todas las constantes con remplazadas por el valor contante. por eso siempre dará error cuando intentes asignarlo desde una ubicación que en sí misma no sea también una constante.

Es decir esto es válido:
Código
  1. Public Const c_Doce = 12
  2. Public Const c_Trece = (c_Doce +1)

Y es válido porque c_doce tiene un valor que es constante y c_doce +1 , al ser tanto c_doce y 1 valores constantes es válido.
Esto no es válido:
Código
  1. Public MiVar As integer = 12
  2. Public Const c_Doce = MiVar

En fin, tu debes saber si realmente necesitas una constante o una variable. Si has de asignar un valor desde un control numericUpDown, desde luego no es una constante lo que necesitas. O bien, no entiendes lo que significa constante.
Si todavía necesitas que el valor del control numericUpdown, quede en la constante, lo que debes hacer es revisar que valor tiene durante diseño y ese mismo valor consignarlo en la constante... que tiene numericUpDown5.Value = 52, pués vas a tu contante y le pones ese valor
Private Const mouted = 52

Pero no puedes asignarlo por código, porque entonces sería una variable.

Hay una solución pero no merece la pena en la mayoría de casos, aún así te la comento, por si soluciona tu caso (ya que siendo una variable, actúa realmente como una constante):

   
Código
  1. Private MiVar As Integer = 12
  2.  
  3.    Public Property Mouted As Integer
  4.        Get
  5.            Return MiVar
  6.        End Get
  7.        Set(ByVal value As Integer)
  8.            Static FirstTime As Boolean = False
  9.            If (FirstTime = False) Then
  10.                MiVar = value
  11.                FirstTime = True
  12.            'Else
  13.                 'Disparar error si se cree conveniente...
  14.            End If
  15.        End Set
  16.    End Property
  17.  
  18.  

Y que se utilizaría así:
Código
  1. Dim MD As Integer  = NumericUpDown5.Value
  2. Mouted = MD

Este código te permite asignar un valor procedente desde donde quieras, pero una sola vez, luego opera como si fuera una constante, se puede leer pero no escribir. y fíjate que por defecto, también le podemos dar inicialmente un valor...
42  Foros Generales / Foro Libre / Re: La NASA está buscando un "protector planetario" contra los extraterrestres en: 3 Agosto 2017, 18:45
Y si no creen para que crees tu que instalaron esta inmensa antena en Puerto Rico allá por los años 60's?: http://astrojem.com/instrumental/radiotelescopioarecibo.html
Que manía de mezclar cosas...
El radiotelescopio de Arecibo, nunca ha pertenecido a la NASA.
Y que lo haya usado (y siga usando) el SETI, tampoco tiene nada que ver con la NASA.

...por cierto, la imagen que has puesto, no se ve en tu mensaje, aparece el texto cuando le das a citar... pero que además está de más...

¿Cuando han dicho eso?
Je... qué gracioso.
Desde que nací, la ciencia oficial ha negado sistemáticamente, extraterretres, marcianos, ovnis, y todo lo que la fenomenología paranormal 'mueve'.

Y solo últimamente han empezado a recular, pero no a afirmar, solo a dejar en duda (que es lo que desde un principio debieron hacer)... en otro medio siglo, en la ciencia oficial constará como que 'siempre se creyó que fue así' y nunca aparecerá nada del menosprecio a tanta gente que no solo cree sino que ha vivido y sentido tales experiencias, fenómenos, etc...

-------------------

Cada vez más cerca de la Verdad, y aunque no es fácil aventurar, yo apuesto por que la vida extraterrestre es insuperablemente más polífica que la vida terretre y mira que aquí tenemos especies y especies... eso si, me da igual que el tamaño de esa vida sea el de una bacteria o del tamaño de una galaxia... que viva un microsegundo o que viva 20 mil millones de años. Vida es vida.

43  Programación / Java / Re: Codigo para crear SUDOKUS en: 3 Agosto 2017, 17:29
lo que hago para contar con la matriz en todo el codigo es declararla como static  como si fuera una variable global, eso mismo es lo que estaba intentando con los otros array ponerlos globales a ver si me funcionaba
Bien. Cuando unos parámetros, en este caso arrays se usan para unas funciones que se usan masivamente, es preferible crear el array una sola vez y luego solo sobrescribirlos. Obviamente de cara a explicaciones, es preferible que cada función se acompañe de exactamente los parámetros que necesite o es más fácil perderse por no ver o saber de donde salen esas variables...
De hecho, de cara a optimizarlo (primero haz que funcione y funcione bien, siempre es lo primero, luego ya se optimizará), a veces un array puede ser reutilizado en más de una función (uno debe tener claro cuando esto es así, para no interferir en los valores y tenerlos sucios esperando unos valores que fueron cambiados por otra función).

Por otro lado hay algunas cosas que no entiendo de tu codigo pero lo estoy intentando a mi manera tratando de interpretar tu codigo.
Cuando suceda, lo remarcas y luego que sumes varias (si las hay), preguntas por esas dudas.


A la hora de crear el unificado tengo problemas con el ciclo lo empiezo en 1 hasta <= 9 para que no tome los valores de 0 y me bota error, esto es lo que llevo hasta el momento no esta terminado ni depurado hay sobre la marcha me voy dando cuenta que me falta

Código:
   static int unificado[] = new int[9];
  
    public static void unificarArray() {
        for (int i = 0; i < 9; i++) {
            unificado[filas[i]] = unificado[filas[i]] + 1;
            unificado[columnas[i]] = unificado[columnas[i]] + 1;
            unificado[caja[i]] = unificado[caja[i]] + 1;
        }
        for (int i = 0; i < 9; i++) {
            System.out.print(unificado[i] + "\t");
        }
    }
No es eso lo que veo en tu código es más, no se ajusta a mi descripción, copio y pego la mía y verás que no se ajusta...
Al caso he retirado los comentarios previos y añadido otros que es donde debes fijarte. También retiro las etiquetas de code, para poner énfasis con negrita.

Array Byte = Funcion UnificarCubiculos(Array Byte Fila(), Array Byte Columna(), Array Byte Bloque())
    Array tipo Byte V(0 a c_Nueve)  // esto es, 10 ELEMENTOS. Este array es de 10 elementos

    // contar el número de presencias de cada valor...
    Bucle para k desde 0 a c_Ocho  // OJO: 0 a 8
        Si (Fila(k) > 0) luego   // Si no está vacía la casilla...
            V(Fila(k)) += 1
        fin si
        Si Columna(k) > 0 luego   // Si no está vacía la casilla...
            V(Columna(k)) += 1
        fin si
        Si (Bloque(k) > 0) luego   // Si no está vacía la casilla...
            V(Bloque(k)) += 1
        fin si
    Fin Bucle
  
    V(0) = 0 //Realmente no es necesario, ya que no llevó la cuenta de 'ceros'
    // Tu si llevas la cuenta al omitir, los condicionales d emás arriba, luego esto es aconsejable, no tanto como obligado 8más abajo mé extiendo sobre esto).


   // En tu versión, falta este bucle
    Bucle para k desde 1 a c_Nueve   //OJO: el bucle recorre desde 1 a 9
        Si (V(k) > 0) luego  //esto es imprescindible. Presencia, indica que aparece. Se consigna k, sólo si v(k) es mayor que 0, es decir si aparece.
            V(k) = k            
        Fin si
    Fin Bucle

    Devolver V        
Fin Funcion

En tu código también llevas la cuenta de 0, no importa, es más sencillo eliminar el condicional, pero en ese caso si será útil, al final la línea donde la comento como: " //Realmente no es necesario, ya que no llevó la cuenta de 'ceros'", como tu si has llevado la cuenta, ponlo a 0. Incluso aunque no se utilice ahora, un cambio a futuro, y que hayas olvidado que eso vale 0 podría darte dolores de cabeza intentando buscar el error. Es sólo una línea de código y evita problemas a futuro, es mejor ponerla.

Luego en mi 'versión' hay dos bucles, en uno genero la "tabla de conteo" de cada valor, pero eso es solo la primera parte, falta la segunda parte, donde en el otro la tabla de conteo se convierte en una "tabla de presencia".
En 'tu versión' el segundo bucle no existe, el que hay se remite al "System.out.print" que solo tiene efectos de verificación, pero le falta el 2º bucle que yo le pongo.

Ya he comentado que a efectos de optimización en ese segundo bucle se podría hacer la parte de la siguiente función, pero sería mucho más scuro, haciendo que cadas función haga una sola tarea (eso si, completa), queda perfectamente claro el propósito (único) de cada función...

- Una tabla de conteo: Es una tabla (array, unidimensional, bidimensional etc...) que lleva la cuenta de veces que aparece un determinado valor. Imagina un fichero de imagen, imagina que quieres obtener su histograma, necesitas contar cuantas veces aparece cada nivel de rojo, de verde y de azul en la imagen. Dando una imagen de 8bits por canal (un byte), se necesitará pués 3 arrays para contar los niveles de rojo, verde y azul. el array tendrá256 elementos por 256 son los niveles posibles para el rojo, verde y azul, es decir valores entrte 0 y 255...entonces leyendo la imagen con cada aparición haríamos algo como (para contarlos):
  arrRojo(Imagen.Rojo(n)) = arrRojo(imagen.Rojo(n)) +1
Que como se ve, no es distinto de nuestor caso, salvando el origen de los datos y el tamaño del array.
- Tabla de presencia: es una tabla donde lo único que necesitamos saber es que dicho valor aparece y nos da igual cuántas veces aparece... Esto puede hacerse directamente o a partir de la tabla anterior. De cara a entender, es preferible hacerlo indirectamente desde creando antes la tabla de conteo, así se vé con mucha claridad,  como se crea esta otra...
si arrRojo(nivel) > 0  luego
   arrRojo(nivel) = nivel
Fin si

Antes el array podía tener un valor elevado (más tratándose de una imagen si la imagen fuera casi toda blanca y tuviera pongamos un tamaño de 3500x2500 píxeles de ancho y alto (o al revés) tendríamos 8.750.000 píxeles en total, en total como solo hay 256 canales y lo son para el rojo, verde y azul, ni 8bits ni 16bits, nos valen para contener dicha cuenta, tendríamos que usar un array de 32 bits... Así es la tabla de conteno. En cambio la tabla de presencia basta que tenga como tipo de datos el más alto del valor que haya de contener, en este caso aún tratándose de colores, bastaría un array de bytes, porque los niveles solo van del 0 al 255. Luego es decisión de cada cual si aprovechas el mismo array para ambas tablas o no.

En el caso del sudoku, aunque lo has declarado integer y realmente nos basta con byte reutilizamos el array...

Para ver la diferencia entre ambas tablas, puedes imprimir el resultado de cada una al final de cada bucle. Verás que la tabla de conteo es equivalente a la tabla de presencia, la tabla de presencias, es también una tabla de ausencias, todos aquellos índices cuyo valor es 0, señala que no están ausentes. La tabla de ausencias que creamos luego es 'ordenada', y es básicamente mover al comienzo del array esos valores ausentes. Con el fin justamente de luego al usar una función random, elegir un índice al azar entre 0 el el último que porta un valor ausente. Al estar contiguos, eso es posible, si no habría que ver si el valor al azar entre el 0 y el 9, está ausente... pero si no lo está repetir todo el proceso se eterniza. Del modo en que procedemos se garantiza con una sola vez la elección de azar y una sola vez la
verificación (previa), sacar el siguiente número a consignar.

--------------------
P.d.:

En tu función de ausentes observo dos fallos:
Quito las etiquetas de code, para comentar encima con engrita.
Bueno al quirtar las etiquetas de code, como usas llaves con 'i', el codigo BBcode, lo interpreta como itálica, así que lo cambio, saco los comentarios y en su lugar dejo asteriscos

Código:
public static void TomarAusentes (){
        int numeros;  //no se usa...
        for (int i = 0; i < 10; i++) {  // **********01
            if (unificado[i] == 0) {
                ausentes[i] = i;  // **********02
            }
        }
    }

// **********01 Este bucle debe empezar en 1, no en 0. Los valores UTILES para el sudoku van del 1 al 9, el 0 no es un valor elegible, indica 'casilla vacía', 'casilla libre', 'casilla sin valor aún'

// **********02 NO: Este debe llevar su propio contador, no puede ser 'i'. Con cada aparición aumenta, si no, no estarían los valores contiguos...
// Imagina que te dicen aqui tienes una lista de alumnos. Todos los que tengan más de 18 años, los escribes en ESTA OTRA lista... acaso en esa nueva lista, no irían contiguos?. el primero hallado en la posición 0, el siguiente en la 1, el siguiente hallado en la 2, etc... sería absurdo que en esa nueva lista, aparezca un alumno en la posición 43, y en la nueva lista, tu lo consignes también en la posición 43... ¿Capisci, el significado de 'nueva lista' y 'valores contiguos'? . cuando se tenga esa lista de alumnos con más de 18 años quien la trate, la tratará contigua, imagina que entre ellos se va  ahacer un sorteo para ver una peli para mayor de 18 años, si en la lista hay inscritos 61 alumnos, se harían papeletas entre 1 y 61 (0 y 60 si lo consideramos técnicamente). Si la lista el último alumno se hubiera inscrito con su posición original pongamos 1563, sería complicado elegir al azar a un alumno, por número, se podría hacer por nombre, peor las matemáticas están para socorrernos, simplifiquemos cuando es posible. Entre 1 y 61 8ó 0 y 60), todos en una sala solitos, es más aislado que sortearlo entre los 1850 alumnos d ela escuela y luego preguntarle si tiene más de 18 años y si es que no, dejarle con un palmo de narices. Usando nombres, los que  son menores no entran en el sorteo, pero ven 'en directo' el sorteo saltando por encima de sus cabezas 'produciendo algo de envidia'  :laugh: :laugh: :laugh: :laugh:
Mejos con la lista aparte en otra función (una sala, se los llama ) y a puerta cerrada se hace el sorteo solo entre los implicados...

Bueno, cuando ya 'furrulen' estas dos funciones si tienes más dudas, pregunta.
44  Foros Generales / Foro Libre / Re: La NASA está buscando un "protector planetario" contra los extraterrestres en: 3 Agosto 2017, 07:24
Extraña petición, para quienes erre que erre dicen que ni creen, ni existen los extraterrestres...
45  Programación / Java / Re: Codigo para crear SUDOKUS en: 3 Agosto 2017, 07:17
Tengo que irme, no he tenido tiempo de revisar tu código (el último)...
Pero si he alcanzado a ver que en las declaraciones de los arrays tienen todos 9 elementos... fíjate en mi código y verás que hay justo una que debe tener 10 elementos y adivina cual es...
En  mi pseudocódigo verás en casi todas partes
Array x (0 a c_Ocho) //c_ocho e suna contante cuyo valor es precisamente 8
pero en una de ellas verás que  en cambio pone:
Array x (0 a c_Nueve) <-----
Adivina cual de las funciones es ???

Citar
static int unificado[] = new int[9];
¿NUEVE??????

Revisa y si lo ves necesario contesta, a mediodía que vuelva, reviso tu código... y las dudas que te hayan surgido hasta entonces.
46  Programación / Java / Re: JAVA primos, pares e impares en: 3 Agosto 2017, 07:09
Código:
Funcion TareasDeMates
    entero n, Cuenta, Pares, Impares, Primos

    Hacer
        n = PedirNumero
        Si (n>0) luego
            Cuenta +=1
            Si ((n and 1) = 0) luego
                Pares +=1
                Si (n == 2) luego   // Como par, sólo el número 2 se considera primo, pués no es divisible más que por sí mismo y la unidad, que es lo que define a un primo.
                    Primo +=1
                Fin si
            Si no
                Impares +=1
                Si EsPrimo(n) luego  //un primo solo puede ser impar... luego va solo aquí
                    Primos +=1
                Fin si
            Fin si
        Fin si         
    Repetir Mientras (n sea mayor que 0)
   
    Mostrar mensaje: Cuenta, Pares, Impares, Primos
Fin Funcion

Código:
Buleano = EsPrimo(Entero n)
    Entero Max

    Max = RaizCuadrada(n)  //eliminar decimales...
    Bucle para k desde 3 hasta Max en incrementos de 2
        Si ((n modulo k) = 0) luego  // es decir si tras la división el resto es 0
            Devolver FALSE // es divisible por otro valor que no es 1 y sí mismo.
        Fin si
    Fin Bucle
    Devolver TRUE
Fin Funcion

Para optimizarlo, es preferible al inicio crear una tabla de primos (se crea una sola vez). Luego la función EsPrimo se modifica, para mediante una búsqueda binaria (sobre la tabla de primos), se localiza si el número entrado existe en la tabla, si existe es primo, si no se encuentra no lo es.
Como eres nuevo, seguramente no seas capaz de hacer una búsqueda binaria, vale... entonces creas un bucle 'While' y lo recorres mientras el número en el bucle sea menor que el recibido, si se encontró devuelve TRUE, si se llega al límite del bucle, se devuelve FALSE.

El dilema con una tabla de primos, es cuánto de grande es el mayor primo que se va a buscar, por que si no está contenido en la tabla, sin duda devolverá false, cuando en realidad 'no lo sabemos', en ese caso, si finaliza el bucle se compara si el primo mayor en la tabla es menor que el número entrado y e ese caso devolver un valor INCIERTO (esto es un mensaje de advertencia: el valor recibido es mayor que el máximo primo guardado en la tabla...)

Pero una tabla, acelera mucho los cálculos...
47  Programación / Java / Re: Codigo para crear SUDOKUS en: 3 Agosto 2017, 06:44
Nebire amigo tengo problemas al unificar los tres arrays en uno no se como pasarlos como parametros a la funcion Unificado.
mmmm... y cómo has pasado el array que contiene todo el sudoku???. Yo veo en tu código una función así:
Código:
public static int [] obtenerFila (int matriz[][], int filas, int columnas){ ...


 
 Y bueno, en esta función...   
Código:
    public static int [] obtenerCaja (int matriz[][], int filas, int columnas){

Esta parte se puede simplificar y mejorar mucho:
 
 
Código:
     
        if (filas >= 0 && filas < 3) {
            minfila = 0;
            maxfila = 2;
        }else if (filas >= 3 && filas < 6) {
            minfila = 3;
            maxfila = 5;
        }else {
            minfila = 6;
            maxfila = 8;
        }     
       
        if (columnas >= 0 && columnas < 3) {
            mincolum = 0;
            maxcolum = 2;
        }else if (columnas >=3 && columnas <6) {
            mincolum = 3;
            maxcolum = 5;
        }else{
            mincolum = 6;
            maxcolum = 8;
        }

Mira, yo lo tengo así de simple:
Código:
bX = ((X \ c_Tres) * c_Tres)
bY = ((Y \ c_Tres) * c_Tres)
X,Y son las cordenadas de la casilla sobre la que estamos operando.
bX y bY, serían el X e Y de bloques, que en efecto serán 0,3 ó 6
Y en efecto, si haces la cuenta, para todas ellas del 0 al 8:

bX = ((0\3)*3) = 0
bX = ((1\3)*3) = 0
bX = ((2\3)*3) = 0

bX = ((3\3)*3) = 3
bX = ((4\3)*3) = 3
bX = ((5\3)*3) = 3

bX = ((6\3)*3) = 6
bX = ((7\3)*3) = 6
bX = ((8\3)*3) = 6

Date cuenta que es una división entera...       

Por último, no pases parámetros a una función si no los necesita para nada. Por ejemplo si la función 'obtenerFila ' no usa 'filas', elimina ese parámetro. Si la función 'obtenerColumna' no utiliza para nada el parámetro 'columnas', retíralo de la función.
También sería más acorde llamar a esos parámetros 'X' e 'Y', 'Filas' y 'Columnas' dan sentido como nombre a una cantidad de filas y columnas, para una posición única al menos que sea singular.
48  Foros Generales / Noticias / Re: 'Por 13 razones', los expertos en suicidio cargan contra Netflix: "Retiren la... en: 1 Agosto 2017, 04:32
Sí, creo que detemrinadas sries y pelis pueden generar en 'cerebros inmaduros' ideales equivocados...
No es extraño por ejemplo que en un capítulo de 'Hermano mayor', un chico tuvier aidealizado como solución económica dedicarse traficar con droga y peor aún de fabricarla... probablemente vio aquella serie donde un profesor de escuela y un alumno, se dedicaban a fabricar droga...o quizás vió aquella serie de Pablo escóbar (o ambas)...

Lo malo de la ficción es que es muy fácil dejarse llevar con el guión y poner como romántico alo que no lo es.... y no hace falta más que ver esa series y pelis de vampiros que 'son buenos', y la chica de turno se enamora del 'conde Drácula'...

En fin, si un cerebro inmaduro no sabe diferenciar la realidad d ela ficción es fácil que elija una opciónequivocada basado en lo que ve en la tv.
49  Foros Generales / Noticias / Re: El último bastión de Anonymous en España: los 'hackers' que (aún) teme todo ... en: 1 Agosto 2017, 04:26
No sé bien... creo que nadie puede decir que 'éste o áquel' es el último bastión de algo, cuando es anónimo'...

De todos modos, a mi siempre me pareció que 'anonymous' eran adolescentes y que una vez han crecido, se les pasó/pasaría la tontería de encima...
50  Foros Generales / Foro Libre / Re: Que ha pasado exactamente en Venezuela esta vez??? en: 1 Agosto 2017, 04:21
Como carajo vas tu a matar a tu propia madre, a tu abuela, a tus hijos o amigos solo por ser zurdos.. que no ves que en ese pais hay muchas familias divididas ideologicamente.. Mucha gente que sigue el chavismo aunque este equivocada cree que hace lo correcto o se ve obligada hacerlo por que trabaja con una entidad del estado (algo muy comun en venezuela) o en algun momento de su historia tuvo algun vinculo con el chavismo aunque lo haya dejado.. esa caseria de brujas generaria sospechas y paranoias a diestra y siniestra y duraria una eternidad.. ademas que tambien tienen manos y armas para defenderse osea que tambien habrian muchas bajas del lado opositor.
Después de una situación grave, viene una situación desesperada, detrás el hambre, y detrás a las puertas está la guerra civil...

Por eso en alguna ocasión he comentado que la situación pasa por eliminar el 'sustento' a los seguidores del chavismo.
Muchos estarán por ideales y contra ellos nada cabe hacer, morirán si hace falta por un ideal aunque esté equivocado, pero aquellos que están por el interés (la comida, el dinero, las promesas, un puesto), entre ellos el ejército... cuando empiecen a pasar hambre, se acabó el soporte y serán ellos mismos quienes cuelguen del palo al 'líder supremo'...
Ésta es la solución menos mala posible (pensar en una rendición incondicional, creo que no entra en la cabeza ni de Maduro ni de sus seguidores, ni elecciones democráticas ni nada que sea voluntario y pacífico). Si ésta no se produce a tiempo, arañando más tiempo la guerra civil será inevitable.
Cuando lo que tengas que perder es la vida sí o sí, por hambre o por hablar y manifestarte, entonces no te importará portar un arma y matar al 'enemigo' así sea tu vecino, tu primo o quien sea... Morirás a gusto si sabes que al menos tu hijo no morirá de hambre como sucederá si no luchas. Cuando lo tienes todo perdido, si la única salida es la lucha, por estrecha que sea la salida, se lucha.

Y bueno yo no veo errado una intervención militar, pero no para invadir el país, ni mucho menos si no para liquidar a los cabecillas. Cortada la cabeza, el cuerpo no sabe por donde tirar...
Prefiero que mueran 12 asesinados, que miles de hambre o cientos de miles en una contienda militar.
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 65
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines