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


 


Tema destacado: Página de elhacker.net en Google+ Google+


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 49
111  Foros Generales / Noticias / Re: Google empieza a ‘cargarse’ páginas web con HTTP en: 30 Mayo 2017, 08:25
Si yo tuviera un buscador y decido beneficiar sitios web que tengan backgrounds de gatitos, es mi problema y si no te gusta, no lo usas.
Hombre.... esto no es muy valiente hacerlo (ni decirlo), cuando ya tienen el mercado en la palma de sus manos (no quedan competidores dignos)... valiente es haberlo hecho hace 15 años... porque los problemas se saben de viejo... rara vez son recientes.

112  Foros Generales / Foro Libre / Re: ¿ Le han llamado este número ? en: 30 Mayo 2017, 08:12
La cosa es más sencilla...
Simplemente les dices: "Pués no, este número al que han llamado está a ni nombre y desde luego no es Stefani Vergara', se han equivocado. Chao..." y cuelgas sin más explicaciones y por supuesto sin dar tu nombre. Si llaman por segunda vez, puedes ser más brusco, en realidad insolente, diciéndoles: "Es que no hablo suficientemente claro el castellano, o es que ustedes tienen problemas de 'entendederas'?. No soy la persona que buscan se han equyivocado de número." y cuelgas sin darles tiempo a decir ni mu.

Si insisten en llamar, ya ni les coges, acto seguido añades el número a tus contactos y lo marcas para desviar las llamadas procedentes de ese número al "buzón de voz" (que es el pseudónimo conocido por todos de "Papelera")... y cuaklquier llamada en lo sucesivo será: "deje su mensaje después de escuchar la señal:..." si gustas de fastidiar, puede poner un mensaje personalizado, algo extenso para agotar la paciencia de esos pesados y darles a probar de su propia medicina... algo como: "Bienvenidos a  mi buzon de voz, puedes dejar tu mensaje, alto y claro, cuando acabe de hablar, bla, bla, bla... pero bueno, para que dejan un mensaje si saben que luego no lo voy a escuchar, pringaos... (y te ríes...) ". Es efectivo.... verás que no tienes más de dos llamadas más desde ese número.
113  Programación / Programación C/C++ / Re: Ayuda con ejercicio de Algoritmo. en: 30 Mayo 2017, 07:45
...el detalle esta en que no se como iniciar el código porque no entiendo muy bien sobre listas enlazadas y tampoco de nodos ...  ... ... y necesito hacerlo si no raspo la materia me gustaría su ayuda y explicación.
Bien, si no sabes por donde empezar... aunque creo que no te pedirían un ejercició del que no habeis dado el tema...

Una lista enlazada, es una lista 'encadenada', de hecho la traducción enlazada es esa, encadenada... exactamente como sucede con los eslabones de una cadena.
Esto quiere decir que cada 'nodo', tiene un puntero llamado siguiente que contiene la drección de memoria al siguiente 'nodo'.
Por nodo puede entenderse como un tipo de datos, una estructura por ejemplo, que contiene determinados datos relacionados entre sí, (como un registro).

A diferencia de los arrays, que tiene todos sus registros contiguos en la memoria, y por tanto sabiendo donde está el primero es fácil saber donde está el enésimo, una lista enlazada, puede tener sus registros, en cualquier posición d ela memoria y de hecho el único modo (partiendo solo de la propia lista), de saber donde se encuentra el enésimo nodo, es llegar justo al nodo anterior a ese enésimo, pués es quien contiene la dirección de ese registro (nodo).
Así un nodo se compone básiicamente de dos punteros:
A - El dato que contiene (o los datos, si guarda más de uno).
B - La dirección al siguiente nodo.

Así crear una lista enlazada, supone crear un nodo llamado raíz, al que siempre tenemos una referencia (por que al ser el nodo inicial, necesitamos saber su dirección, para poder acceder a los demás). Supone guardar el número de nodos que tiene, supone guardar el índice del nodo actual y una referencia al mismo. También una referencia al último nodo (para poder añadir tras él). Además supone crear como mínimo los métodos: AñadirNodo, EliminarNodo, VaciarLista, y por encima de ello Crearlista, Y EliminarLista... También será útil poder Recorrer la lista, o al menos poder acceder al nodo nº, y tampoco sobra una función BuscarNodo por un dato especñífico ni BuscarNodoSiguiente con el mismo dato a partir de un nodo dado (por ejemplo uno previo que contenía ese dato).
Al CrearLista, primero se crea el nodo raíz, en su dato puede quedar nulo o no, Según gustos, una forma típica es que el nodo raíz, no interfiere, no forma parte de la lista, así al crearse la lista, se establece Numnodos = 0, IndiceActual = -1 y se crea la referencia de nodo raíz.
Un nodo contiene dos elementos como te he señalado:
- Dato: del tipo de datos que interese
- Siguiente: puntero a otro nodo. si es el último, su valor es nulo.
Y puede haber una función para CrearNodo(Dato), que por lo general devuelve el puntero del nodo creado... así:
Código:
//Crear unalista enlazada cuando el nodo raíz no se usa en la propia lista.
Funcion CrearListaEnlazada
    Raiz = CrearNodo("")
    Ultimo = Raiz
    NumNodos =0
    IndiceActual = -1
    NodoActual = nulo
Fin Funcion

Código:
//Crear unalista enlazada cuando el nodo raíz se usa en la propia lista.
Funcion CrearListaEnlazada(String Dato) //más parámetros si se deben guardar más datos.
    Raiz = CrearNodo(Dato)
    Ultimo = Raiz
    NumNodos =1
    IndiceActual = 0
    NodoActual = Raiz
Fin Funcion

Código:
Funcion AñadirNodo(String Dato)
    Ultimo.Siguiente = CrearNodo(Dato) //Añade un nuevo nodo.
    NumNodos +=1
    Ultimo = Ultimo.Siguiente
Fin funcion

Una función que busca un nodo por el dato y devuelve el nodo. si no se encuentra devuelve nulo, porque el último nodo apunta como siguiente a nulo.
Código:
Nodo = Funcion BuscarNodo( String Dato)
    nodo n = raiz
    Mientras n.Dato != Dato
       n = n.Siguiente
    Fin mientras
    Devolver n  // si n es nulo, implica que se llego al final y no se encontró
Fin funcion

Una función que busca un nodo desde unaposición dada:
Código:
Nodo = Funcion BuscarNodoSiguiente(Nodo n, string Dato)
   Mientras n.Dato != Dato
       n = n.Siguiente
    Fin mientras
    Devolver n  // si n es nulo, implica que se llego al final y no se encontró
Fin funcion
Si se crea esta función la previa podría delegar en esta, para establecer como punto de búsqueda el nodo raíz.
Código:
Nodo = Funcion BuscarNodo( String Dato)
    Devolver BuscarNodoSiguiente(Raiz, Dato)  //
Fin funcion

Acceder al nodo enésimo.
Código:
Nodo = Funcion NodoIndice(Entero Indice)
   Si Indice < NumNodos luego //Numnodos siempre es 1 mayor que el indice mayor que puede ser pedido
       Si indice => Indice actual luego  // de dónde queda más cerca índice?
          n = NodoActual
          x = Indiceactual      
       Si no
          n = Raiz.Siguiente
          x = -1
    Si no
       Devolver nulo
    Fin si

    Mientras x< indice
         x +=1
         n = n.Siguiente
    Fin mientras  
    Si n.siguiente no es nulo luego
        IndiceActual = x
        NodoActual = n
    Fin si
    Devolver n
Fin funcion


Código:
// Inserta un nodo para que ocupela posición señalada.
Funcion InsertarNodo(Entero Posicion, String Dato)
   Si Posicion > NumNodos
       AñadirNodo(Dato) // Se añade al final si excede el número de nodos.
   Si no
       Nodo n = CrearNodo(dato)
       Si posicion <0
            Posicion = 0 // pasa a ser el primer nodo
       Fin si
       Nodo p = NodoIndice(Posicion-1) //lama a la función anterior, para darnos el nº nodo d ela lista.
       n.Siguiente = p.Siguiente
       p.siguiente = n
       NumNodos +=1    
      
       Si IndiceActual => Indice
           Indice +=1
       Fin si
   Fin si
Fin funcion

Una lista más robusta, es la doblemente enlazada, en la que hay además un puntero en cada nodo llamado Previo (o Anterior) y que apunta a un nodo anterior en vez de al Siguiente. Esto facilita el recorrido de la lista, hacia adelante o atrás. si la lista es simple (simplemente enlazada), entonces una busqueda debe ser siempre hacia adelante y si ni siquiera mantienes un 'NodoActual' y su 'indiceActual', entonces siempre deberás buscar desde la raiz. Un nodoActual e indiceActual, te permite decidir si es preferible buscar desde ahí hasta el final o desde la raiz hasta el actual.

Otra lista aún más completa, es cuando además es circular... es decir el último conecta al raíz, así puede buscarse desde el actual hacia adelante, y al final llegar al raíz para continuar hasta el actual. si es doblemente enlazada, igualmente desde Raíz habrá una conexión al último... En estos casos, al añadir un nodo, requiere reconectar el final con la raiz... Aunque sea circular, conviene reconocer cuando se pasa por el extremo, incluso aunque sea transparente al cliente...

Por último, si mantienes un actual recuerda que borrar un nodo intermedio, supone antes enlazar al siguiente al que ese a eliminar apunta, si no se perdería todos los que siguen tras él, y por supuesto actualizar 'indiceActual' si está por encima del que se elimina (baja una posición el índice)... del mismo modo que insertarnodo, actualiza el índice s está en la posición a insertar o más arriba...

en fin.... esto debe darte alguna idea y servirte de orientación... es algo rápido, así que tendrás que trabajarlo un poco y si decides que raiz, tenga importancia en la lista, debes ajustar el códig en consideración a ello. en la práctica es bueno que no forme parte de ello, porque funciones que requieren al menos un nodo, si la lista está vacía podría dar error, aunque siempre podrá controlarse de otro modo, es preciso decidirse y tenerlo en cuenta.

Ahora ya no tienes excusas, tu siguiente pregunta deberá aportar código si o si...
114  Programación / Programación C/C++ / Re: Ayuda errores en codigo en lenguaje c. en: 30 Mayo 2017, 06:32
El problema (de los errores del promedio) está en el bucle...
Debes usar cada valor del vector: Todos y solo una única vez cada uno.
En vez de hacer esto:
Código:
//el promedio vector a
aux=0;
for(vector=1;vector<=n;vector++){
suma=numerosa[vector]+aux;
aux=numerosa[vector];
}

Te basta hacer simplemente:

Código
  1. suma = 0
  2. for(vector=0;vector<=impares;vector++){
  3. suma +=numerosc[vector];
  4. }
Simplifica el código y no tienes que hacer cosas raras antes del bucle, solo poner a cero la variable suma, por si fue usada con anterioridad.
Como ves en el código, el bucle se recorre entero de principio a fin, luego en cada iteración suma el valor del índice apuntado en el array...
Finalmente el promedio será correcto, si lo divides entre el número exacto de componentes que se suman, esto es el tamaño de elementos del array. Al comenzar en 0, quiere decir que el bucle entra por última vez cuando 'vector' es el índice final... luego todavía intentará otra vez entrar en el bucle, con previo incremento de vector, pero ya no podrá entrar, porque finalizó... esto es, la variable de control del bucle, al final contiene la cantidad total de veces que se entró.
Luego el promedio puede hacerse como:
Código
  1. Promedio = (Suma / Vector)
Aunque si n ya tiene igualmente la cantidad de sumandos, vale igualmente...


Por último, señalarte que para detectar si un número es impar, en vez de usar el operador módulo, usa el operador AND... (que siempre es más rápido y al caso más claro)

En vez de esto:
   
Código
  1. y=numerosa[vector]%2;
  2. if(y==0){
  3.                     ...

Mejor así:
Código
  1. if((numerosa[vector] & 1)==0){
  2.                   ...
115  Foros Generales / Noticias / Re: Google empieza a ‘cargarse’ páginas web con HTTP en: 29 Mayo 2017, 16:25
Si existe un consorcio (W3C) cuyo cometido es precisamente establecer estándares y recomendaciones, no entiendo muy bien qué papel juega 'gúguel' en ésto...

Podría alegarse que existen discrepancias en las formas de funcionar del W3C, pero 'gúguel', lo hace de forma unilateral, sin reclamar apoyos de nadie más. Así, que es normal preguntarse si detrás hay segundas intenciones.

No sé si soy yo, pero cada día tengo más clara la sensación de que 'gúguel' está dominado por algún egocéntrico megalomaníaco.
116  Foros Generales / Noticias / Re: Ex-CTO de Mozilla: Chrome ha ganado, Firefox no va a ningún sitio en: 29 Mayo 2017, 15:44
La triste realidad es que las cifras.. mandan, cuando se trata de cuestiones económics.

Por lo demás, Chrome, es el navegador favorito del inculto informático. cualquier persona que tenga un conocimiento mínimo de informática, sin duda detestará Chrome a más no poder... básicamente por la cantidad de recursos innecesarios que demanda, por el atentado que supone a la privacidad y porque en esencia tampoco ofrece nada especial que no posea el resto de navegadores que le haga sobresalir, haciéndolo inmerecedor de copar el mercado.
117  Foros Generales / Foro Libre / Re: Corea del Norte lanza un misil dentro de la Zona Económica Exclusiva de Japón en: 29 Mayo 2017, 15:33
La cuestión es que... Japón ya se está cansando de Corea N. y la misma rtazón que esgrime Corea N. Para ensayar y lanzar misiles, puede alegar Japón, para en una acción relámpago, hacer lo mismo y con los mismos motivos.

Creo que la tregua para el niñito gordo, se está acabando. Si quiere jugar debe hacerlo en su patio, no en el patio del vecino (es una regla básica).
118  Informática / Hardware / Re: Cambiar ordenador poco a poco en: 27 Mayo 2017, 22:46
Creo que no lo has entendido, entiendo que las fuentes de alimentacion actuales son estándar, pero mis componentes son, como se ha dicho anteriormente, del 2006, lo que pregunto, entonces, es que si los conectores han variado desde el 2006 hasta ahora, nada más, y no veo ninguna tonteria lo de cambiar la caja, puesto que cambiar la caja supone cambiar ventiladores y mejorar ventilación.
Lo he entendido perfectamente.
Y la solución es que:
- Si tus  discos durosm, son IDE, necesitarás SATA. Las fuentes de alimentación actuales, puede incorporar conectores IDE o no, depende del modelo, pero tampoco importa demasiado si no los trae, es relativamente fácil colocar un conector a otro conector, (y si no cortar y soldar) la cuestión en este caso no es si tre o no ese conector, si no si la placabase, traerá conector IDE, que asumo que no. Pero esto tampoco es el final, se monta en una carcasa y se conecta por USB y listo.
soluciones sobre conectores hay a patadas y los conectores sueltos, valen entre 3-20euros, según marca y calidad.
- Si tus conectores son USB 2.0, seguirán funcionando en un USB 3.0 o superior, pero a la velocidad del USB (lógicamente).
- Los conectores de corriente a la placa base, son de 24 pinesm, que vienen por un lado 20 y por otro 4 que pueden ser unidos o soltados, para ser 20 ó 24.
- El conector de 4 pines, para el procesador... actualmente los hay de 8 pines, pero son colo los otros, 4+4, es decir si tu procesador funciona con 4, conectas el que corresponde de 4, si luego con una nueva placa base requiere 8, se conectan esos dos de 4, entre si, y de ahí a  la placa base.
- Posiblemente vengan conectores adicionales que en tu placa base vieja no necesites.
- Lo único que debería preocuparte es que placa vieja no usara PCI-Express. Pero esto tampoc es un problema, esto sólo indica en que orden deberías adquirir las piezas:
Placa base, memoria, procesador y placa de vídeo (si no te conformas con la que pueda traer la placa base), deben adquirirse juntas o con poco tiempo entre ellos, para garantizar que sean compatibles y que luego no dejan de fabricarse cuando pretendas adquirirlo.

Y sobre la caja... sí, es una tontería, porque todas las cajas (incluídas las de hace 25 años), traían capacidad (espacio con sus respectivvas hembrillas para enrroscar los tornillos) para conectar al menos 3 ventiladores. Que son más que suficientes, salvo que vivas en el Sáhara, en Gobi o en Atacama. Ahora bien, lo habitual, es que para reducir precios, los PCs, incluyan menos ventiladores (de los que realmente puede portar).
119  Foros Generales / Noticias / Re: Bitcoin no deja de crecer y supera los 2.700 dólares por unidad en: 27 Mayo 2017, 22:29
Ja, estoy esperando el momento indicado para vender mi Bitcoin... me salió muy barato por allá en 2013 ;-)
Sí... muy interesante. Yo estuve a un pelo de comprar 100bitcoins cuando apenas valían 16 euros...  :laugh: :laugh: :laugh:

Pero... yo no creo que valgan 2700, es pura especulación.
Ya veremos a dónde llega esto...
La fé en Bitcoin, como nueva moneda se basaba precisamente en evitar la espculación que se hace con el dinero, entre bancos, bolsa, empresas internacionales y gobiernos. Y al final resulta que Bitcoin, se ha convertido una especulación gigante.
Como digo, será mejor ser espectador que actor (salvo que se tenga pocos bitcoins), en estos momentos a ver que pasa en los próximos 5-10 años.
120  Programación / .NET / Re: Poner varios números y que los separe en: 27 Mayo 2017, 22:12
NEBIRE: El enlace que me has mostrado, es como contabilizar los números, y eso lo tengo echo. Esa parte se me es fácil.
Sigo sin entenderte... a mi me dices esto...
Pero luego a electro, le respondes esto otro:
Gracias, eso (el código de Electro) separa los números, pero necesito una vez separado esos números contabilizarlos, lo que tendría que asignar cada número en una variable, ¿No es así?
Así que no hay quien entienda a veces que rayos pedís...

De todos hay un código mucho más fácil para convertir un número en un array, de los valores que lo componen...
Código
  1. Private Function Splitter(ByVal X As Integer) As Char()
  2.    Return x.ToString().ToArray()
  3. End Function
  4.  


Y en la imagen la llamada, y un despliegue del resultado:


En cuanto a lo de pensar un mínimo, llevo varios días buscando la forma, y pensando en como conseguirlo. Tengo hasta el SeudoCodigo echo, pero no logro encontrar la forma de separar los números y poder utilizarlos.
Varios días, ayyyyy... habría que ver el pseudocódigo que has hecho.

De todos modos el código del enlace que te daba, también separa los números (tanto si luego los cuentas como si no). De hecho, la conversión a array (ue hace VB, tras convertirlo a string, es más lento que esto: tomar las unidades del número y dividir entre 10, tomar las unidades, y dividir entre diez,  tomar las unidades del número y dividir entre 10, tomar las unidades del número y dividir entre 10... hasta que el valor a dividir sea 0... indicativo de que ya no hay más cifras...
Páginas: 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ... 49
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines