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


 


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 93
41  Programación / .NET / Re: 7-ZIp en: 23 Noviembre 2017, 17:48
Ya pero aquí entonces se suma una falta de conocimientos mínimos del lenguaje.

Es absurdo pretender crear un avión desde cero, si no se sabe ni lo que es un tornillo, una rueda, un ala... primero necesitas aprender física elemental, luego mecánica,  termodinámica, y más cosas cada vez más específicas. Pero si uno ni llega a saber el nombre de las cosas, lo único que se le puede aconsejar es que aprenda a gatear, luego a andar... querer correr sin mantenerse de pie, lleva a muchas caídas y que los dmeás te 'empalillen' las piernas para que tu creas que 'corres' no es la solución.

Mi consejo es que te dejes de hacer nada. Antes aprende lo básico y elemental, luego los fundamentos del lenguaje en que quieras programar...  y ya entonces cuando tengas que preguntar algo, además de saber hacerlo con propiedad podrás entender la ayuda que se te preste y aplicarla. Sin esto, es perder el tiempo.
42  Programación / Programación C/C++ / Re: ejercicio programación en C en: 23 Noviembre 2017, 17:35
llevo solo esto
No está bien exponer el código y esperar que uno repase tu código de arriba a abajo, debes explicar qué dudas tienes, dónde te pierdes, que te sale mal, que error te marca, etc... solo entonces uno con dicha información puede tomarse la molestia de revisar la parte del código que pudiera verse afectado por tus dudas, señalarte los errores, sugerirte una solución, otro enfoque, etc, etc...
43  Programación / Programación C/C++ / Re: Necesito ayuda con mi codigo en C en: 23 Noviembre 2017, 17:27
Olvida por un momento que estásprogramando... toma lápiz y papel y dibuja el array inicial.

Luego debajo haz lo que te piden, muy despacio, pensando y meditando que pasos has dado para llegar a ello... toma un línea (que son los primeros 4 valores del array y los ordenas al revés, solo esa línea entre sí... luego procede con la siguiente línea que va del índice 3 al 7 (valores 5 al 8)...

De hecho antes de nada intenta ordenar del revés 4 elementos entre si:
16, 21, 33, 42
cuando lo consigas intentar ordenar 5 valores dle revés, entre sí, por ejemplo estos.
16, 21, 27, 33, 42
y cuando lo consigas, tendrás las ideas necesarias para hacerlo a todo un array cada 4 elementos como te piden...

Programar es pensar y conocer el lenguaje (en el que s eprograma), lo uno sin lo otro, no funciona.


p.d.: Por cierto, puedes explicarme en qué te sirve esta línea para intentar resolver el problema:?
Citar
/* Inicializamos el generador de números aleatorios con el número de proceso */
srand(time(0));
 
44  Programación / Programación C/C++ / Re: leer archivo apartir del siguiente renglon y comparar con una cadena en: 23 Noviembre 2017, 17:21
Primero debes tener claro el formato del fichero...
Punto de lectura de la clave: Puedes tener 3 casos típicos:
1 - Sabes que la clave se guarda en una línea, específica, entonces en este caso, lo ideal es leer líneas, una por una.
2 - Se sabe que comienza en un punto específico, por ejemplo el la posición 143, entonces en este caso, lo ideal es mover el puntero de lectura a esa localización, para empezar a leer desde ahí.
3 - Algo intermedio entre ambos, son los registros... un registro es una estructura cada uno es como si fuera una línea (caso 1), pero con la particularidad de que un registro tiene un tamaño fijo en bytes (la línea se reconoce por un carácter que delimita su final (típicamente retorno de carro y/o avance de línea). pero al igual que la localización (caso 2), tienes que saber que número de registro contiene la clave deseada, luego se salta al punto específico (igual que en ese caso 2, la dirección será: el tamaño del registro en bytes multiplicado por el número de registro). Se recupera dicho registro y a través del campo específico se tiene la clave.
4 - No se sabe en qué línea está, tampoco que posición ocupa, y no son registros, lo único que se sabe es que hay algún carácter identificativo del comienzo de la clave que podría o no ser único (incluso peor estar a cierta distancia de ese identificador). en resumen el fichero no tiene formato preciso, pero al menos proporciona un mínimo para localizar la clave. Ahí no queda otra que recorrer el fichero byte a byte hasta encontrar el identificador (que no tiene por qué ser de 1 solo byte, podrían ser perfectamente: 4,8, 13, 231...¿?) y luego de hallado el identificador, avanzar hasta el comienzo de la clave si no está inmediatamente tras dicho identificador.

Aparte debe haber un tamaño reconocido para la clave, igualmente suele haber varias maneras:
1 - El tamaño es dijo y siempre es el mismo, por ejemplo 16, 32, 40,...¿? caracteres. Pués eso, se leedicha cantidad.
2 - El tamaño viene fijado con anterioridad a la clave con 1,2,4 bytes... depende del tipo de datos usado para almacenar el valor, pero lo lógico es que no fuere más de 1 byte (que permite un largo de clavede hasta 256, salvo que se separa que ese valor sirve para hallar el tamaño real, con un factor multiplicativo u otra expresión más omenos compleja).
3 - A priori no hay un tamaño preasignado, pero hay un identificador de 'fin de clave' (o de string si fuera el caso), cuando se localiza desde el comienzo hasta el final ese es el tamaño de la clave.
4 - En un registro, el tamaño (cantidad de caracteres) está prefijado por el diseño del registro.

Ahora tu debes saber que formato sigues tanto para el punto de comienzo como para indicar su tamaño. con toda esa info, debes colocar el punteor de lectura en el punto adecuado y leer y almacenar como clave la cantidad de caracteres que determinan la clave.
Pudiera ser que la clave tenga un tamaño prefijado (por ejemplo en un registro, de tamaño 32, 40, 60,etc... que indicaría el máximo para la clave), en tal caso si no es obligatorio alcanzar ese tamaño, debe despreciarse los caracteres de espacio (u otro) consignados a la derecha de la clave, para completar el tamaño prefijado para almacenarlo.

En alguna parte tendrás almacenado la clave que introduce el usuario (una variable que se reclama al usuario en algún momento). Validarlo es comparar que ambas claves coinciden caracter a carácter. Al caso en la fase de diseño debes considerar el asunto de la capitalización (si mayúsculas es igual o distinto de minúsculas... para las contraseñas debería ser distinto "A" de "a" de "Á" de "Ä", de "á", de "â", etc..).

Bien que guardar una clave a fichero, no es cosa de seguridad, pero como será un ejercicio y nada profesional, vale...

Por último considera importante el tamaño de la clave para tus bucles, tanto de comparación como de entrada del usuario... como de guardar y leer de fichero, fija un tamaño máximo y uno mínimo (esto último lo haces bien rechazando pidiendo más caracteres hasta llegar a un mínimo), pero considera rellenar hasta el largo máximo con cualquier otro carácter (espacio, u otro) así guardas siempre afichero unacantidad fija y lees de fichero una cantidad fija, y luego cuando el usuario finalice de entrar caracteres, tu completas su clave hasta el largo máximo con ese carácter de relleno, antes de hacer la comparación. Así comparas siempre dos claves de igual tamaño. etc...
y de entrada deja la clave en el fichero en la primera línea, primer byte, cuando todo te salga bien hasta ahí, ya miras de ponerlo en otra línea y tal... paso a paso cuando aprendes...
45  Foros Generales / Noticias / Re: Las polémicas ‘loot boxes’ de los videojuegos podrían acabar siendo ilegales... en: 23 Noviembre 2017, 04:54
Supongo que mas que ilegalizarlos, sería exigirles que se den de alta como 'casa de juegos de apuestas' y/o pagar los impuestos pertienentes por tales recaudaciones, siempre y cuando puedan quedar pperfectamente desglosados los ingresos por las desdichadas 'cajas sorpresa'.

Deberámos llamarlas: 'kinder-box'...
46  Programación / .NET / Re: 7-ZIp en: 23 Noviembre 2017, 04:28
Para lo que quieres hay varias formas de hacerlo. 2 relativamente sencillas (siempre que se sepa un mñínimo de programación)...

1 - Añade una interfaz gráfica a tu programa. en el como te dice Okik, usa un control OpenFileDialog, para guiar al usuario a la carpeta deseada y que elija uno o varios ficheros. A la devolución del openfiledialog.show, si hay al menos un fichero (si no se canceló), usas la ruta openfiledialog.filename como ruta para comprimir.
(mira bien los métodos que ofrece (.initdir , .path, .extension, .filter, etc...)

2 - Como te señaló Elektro, añadiendo una shellextensión. A tu nivel, mejor el 'modo cutre' añadiendo alguna clave al registro en las clases "*" (cualquier fichero) incluso en "folder", para comprimir el contenido de toda una carpeta.
en este caso tu programa no precisa una interfaz de usuario, el usuario usa el 'explorador de ficheros' del propio windows, cuando el usuario pincha en un fichero, se muestra el menú contextual (el menú emergente del explorador de ficheros de windows) y si el usuario elige del menú la opción (de ejemplo): "Comprimir con rigorvzla.exe", la shell de windows, enviará un comando a tu programa (el formato del mismo es el que tú le dejes al editar la clave en el registro), es decir tu programa se arrancará y recibirá un comando 8una orden), con al menos 1 parámetro (las ruta del fichero)... ahí tu ya examinas la orden recibida (que tú elegiste poner en las claves del registro) para saber que orden es, qué se debe hacer con ese fichero... y si es comprimir, lo comprimes.

3 - Similar al openFioleDialog, solo que en vez de usar un control para el caso, lo creas tú a tu antojo (no es preciso que sea un control de usuario, puede ser una ventana con toda la funcionalidad exprofeso). al final tendrás un control de tipo lista, donde se ha rellenado con los nombres de los ficheros qwue contenga la carpeta seleccionada, al caso ahí sería acertado seleccionar el/los ficheros deseados yluego pulsar un botón "&Comprimir", que es donde se le dará la orden. el botón solo se activaría cuando la lista tenga ítems seleccionados... etc, etc... (si me enrrollo, corro el riesgo de que tampoco lo leas).

Y sin ánimo de crear polémica, yo también desconozco eso de sombrar o sombrear... técnicamente seleccionar un ítem de una colección, puede o no tener sombra, pués es una cuestión meramente gráfica y a gusto del que lo programe, típicamente se cambia de color el ítem, o se pone en negrita, incluso hay quien lo refleja cambiando el tamaño y/o el tipo de fuente. Si además de seleccionado es el ítem que tiene el foco, lo típico es dibujar una retícula de puntos sobre el ítem. Mi consejo es que si quieres programar-ser programador, uses la jerga de los programadores, para hacerte entender. No puede haber un lenguaje por cada programador, sería como la torre de Babel, ininteligible, jamás nos entenderíamos y se pierde muchísimo tiempo con ello... Si leyeras todo eso que no quieres leer, sin darte cuenta se te 'pegaría' la jerga adecuada...

p.d.: en realidad en la red, hay muchos ejemplos con código para cada caso... pero para encontrarlos, efectivamente hace falta usar las palabras correctas en el buscador.


47  Programación / Java / Re: Evitar que los elementos se repitan en un array en: 23 Noviembre 2017, 03:44
Una modificación del agoritmo de ordenamiento counting, hace lo que quieres...
Ese algoritmo tiene serias limitaciones, porlo que no vale para todos los arrays.
Los límites son:
- Solo números.
- Deben ser enteros (no valen decimales, porque los índices de un array siempre son vaores enteros).
- Valores entre el mínimo y el máximo pequeños (porque precisa un array adicional en memoria de tamaño (valorMaximo-valorMinimo + 1) ).

Si tu array se ciñe a esos límites, puedes usarlo, no existe ninguna implementación más rápida que esta (pero con esas limitaciones).
Código:
array = funcion OrdenarYEliminarRepes( array Ar() )
    entero k, min, max, n
    array temp(), salida()
 
    // recorrer el array para buscar el valor mayor y menor del array
    min = ar(0)
    max = min
    bucle para k desde 1 a ar.count-1
        si (ar(k) < min) luego
            min = ar(k)
        oSi (ar(k) > max) luego
            max = ar(k)
        fin si
    fin bucle

    // OJO: si min es pongamos 20 y máx 100 millones se creará un array de 100 millones-20, aunque tu array de entrada solo tenga 40 valores...
    redimensionar temp(desde 0 hasta max-min)

    // recorrer el bucle otra vez para saber quñe valores aparecen y consignarlos en el array temp.
    bucle para k desde 0 hasta ar.count-1
        si (temp( ar(k)+min ) = 0) luego
            n +=1
            temp( ar(k)+min ) = 1
        fin si
    fin bucle

    redimensionar salida (0 a n-1)
    n = 0
    // recorrer el array temp, para consignar los valores presentes a la salida.
    bucle para k desde 0 hasta max-min
        si (temp( ar(k)+min ) = 1) luego
            salida(n) = temp( ar(k)+min )
            n +=1
        fin si
    fin bucle

    devolver salida
fin funcion

et voilá... ya tienes el array ordenado y con solo una copia de cada valor (sin duplicados). Recuerda que solo vale si el array se atiene a los límitaciones indicadas....
48  Programación / Programación C/C++ / Re: Necesito ayuda con este programa quiero que me imprima las cartas que almacene en: 23 Noviembre 2017, 03:19
Tienes que pensar como un humano, y luego traducirlo a código... porque programar es eso.

Se obvian las funciones que no son precisas para llegar al punto donde explicar el asunto de tu interés.

1º - Debes disponer de una baraja, supongamos que la baraja se compone de 4 palos (y como soy español y no inglés usamos de ejemplo la baraja española y no la francesa (la de póker)).

Código:
array de bytes Baraja(0 a 39) //también podría ser bidimensional (0 a 3, 0 a 9)
entero siguienteCarta   // el índice de la carta que actualmente está arriba en la banca (lista para salir).

// Esta función genera la baraja. Cada carta aparece 1 solo 1 vez.
funcion RellenarBaraja
    entero j, k, i, n

    i = 0
    bucle para k de 0 a 3
        bucle para j de 0 a 9
            Baraja(n) = (i+j)  // basta un solo bucle desde 0 a 39, pero lo hago en 2 bucles
                                      // para que entiendas la equivalencia resuelta con un array bidimensional
                                       // Baraja(k,j) = (i+j)
        fin bucle
        i +=10
    fin bucle

    llamada a Barajar(2)
fin funcion

2º Tras ser generada la baraja (contener las cartas deseadas), debe ser barajada.
Código:
// Esta función baraja las cartas, esto es las cambia de orden.
funcion Barajar(entero veces)
    entero k, j, i, n

    Si (veces<1) luego   // se debe barajaral menos una vez.
        veces = 1
    OSi (veces>9) luego  // tampoco queremos barajar 1000 veces, no es necesario...
        veces = 9
    Fin si

    bucle para j desde 0 a veces-1
        bucle para k desde 39 hasta 1 regresivamente
            //elegir al azar un índice entre 0 y el actual del ciclo
            i = aleatorio(entre 0 y k)
            // intercambiar los valores de los índices de ciclo y elegido al azar  
            n = baraja(i)                
            baraja(i) = baraja(k)
            baraja(k) = n
        fin bucle
    fin bucle

    siguienteCarta  = 0  // el índice la carta actual en la banca es la primera.
fin funcion


Ahora toca repartir las cartas entre los jugadores, pero antes de repartir, vemos la necesidad de tener un alojamiento para los datos de cada jugador, básicamente hará falta una estructura que contenga el array de 'cuales' cartas tiene cada jugador. un valor que indique cuantas le restan válidas en ese array.
Código:
estructura Jugador
    string nombre //un nombre para el jugador, así cuando se pase el turno, se indica su nombre. Esto debe establecerse al iniicio del juego (una única vez)
    array de bytes Cartas(0 a 39) //dijimos que repartimos 5, si un jugador puede tener más cartas que las que se reparten,
                   // el tamaño del array debe aumentarse hasta tal posibilidad, si se ignora, debe ser el mismo tamaño de la baraja.
                   // Prevenimos tal situacion si ya albergamos esa posibilidad. La baraja también podría ser un jugador de nombre "La Banca", con esa misma cantidad de cartas en el array...
                  // Si el tamaño es el de la baraja, basta con crear los arrays al inicio del juego una única vez.
    entero cantidad  //número de cartas que tiene actualmente, esto evita redimensionar el array, porque apunta a la sigueinte (en realidad a la anterior).
    // otros datos que convenga que se mantenga para cada jugador.
fin estructura

Array de jugador jugadores(0 a 3)  //4 jugadores, ó (0 a 4), siendo la banca el jugador 0 y el resto los jugadores en lid.


3º Repartimos... debemos saber cuantos jugadores hay en la partida y cuantas cartas se reparten. Vamos a suponer que no se reparten todas sino, 5 al empezar... por simplicidad, no se comprueba si quedan suficientes cartas por repartir. En teoria si se llega al final, habría que tomar las que haya aún en la anca y barajarlas (solo las que quedan ahí), es fácil modificar la función de barajado para indicar cuantas barajar y tal...
Al parámetro desde se le pasa el valor de siguienteCarta , que se actualiza al retorno de la función.
Código:
// Esta función es la correcta cuando cada reparto sucede que todos los jugadores se han descartado, si no es así, el procedimiento debe variar (se pone debajo una aproximación al caso).
entero = funcion RepartirBorrando(entero numJugadores, entero numCartas, entero desde)
    entero j, k, i, n

    // borra-sobrescribe valores previos.
    bucle para k desde 0 a numJugadores-1 // jugadores
        jugadores(k).tengoAses = 0 // se borran todos los ases que tuviere, si le quedan...
        //realojar espacio para jugadores(k).cartas(0 numcartas -1)
        // pero si el array es del tamaño de la baraja basta hacerlo solo al inicio del juego, no tras cada partida ni reparto de cartas.
        jugadores(k).cantidad = numCartas //esto no es estrictamente necesario, se establece a  
    fin bucle

    bucle para j desde 0 a numCartas-1  //cartas
        bucle para k desde 0 a numJugadores-1 // jugadores
              n= baraja(desde)
              jugadores(k).cartas(j) = n            
              desde +=1
        fin bucle
    fin bucle

    devolver desde // desde lleva la cuenta de cartas gastadas, en la banca.
fin funcion

Función de reparto cuando se puede tener diferente número de cartas, según momentos y jugador durante la partida. alcaso se supone un tamaño de array de cartas para cada jugador del mismo que la baraja, así se evita errores de desbordamiento y hace innnecesario controlar dicho factor...
Código:
entero = funcion Repartir(entero numJugadores, entero numCartas, entero desde)
    entero j, k, i, n

    // OJO: nótese que aquí se ha intercambiado el orden de los bucles (facilidad para el código, el reparto sigue siendo aleatorio, pués las cartas están barajadas y nadie sabe donde ni cuales.
    bucle para k desde 0 a numJugadores-1 // jugadores
        i = jugadores(k).cantidad
        bucle para j desde 0 a numCartas-1  //cartas
              n= baraja(desde)
              jugadores(k).cartas(i + j) = n          
              desde +=1
        fin bucle
        jugadores(k).cantidad += numCartas // suma las que se reparten a las que se tiene actualmente
    fin bucle

    devolver desde // desde lleva la cuenta de cartas gastadas, en la banca.
fin funcion

4º Ahora llegamos al punto donde es el turno de un jugador y se comprueba si tiene un as y por tanto roba una carta (la siguiente o una alazar?) al resto de jugadores...
Recuerda: Se han obviado las funciones que no son precisas para llegar a este punto donde se explica el asunto de tu interés.

Código:
entero funcion SiguienteTurno(entero turno) //, entero indiceCarta para elcaso de que sea el jugador quien decide qué carta se arroja.
    entero j, k , i, n

    k =  jugadores(turno).cantidad -1

    // tomar la siguiente carta:
    si se elige al azar
        i = Aleatorio(entre 0 y k)        
    oSi se toma la siguiente que sigue en secuencia
        i = k        
    oSi decidio el usuario
        i = indiceCarta
    fin si
     // valor de la carta seleccionada
    n = jugadores(turno).cartas( i )

    // Esto solo si elegir la carta supone descartarse de ella.
    Si decidio el usuario // y la carta se debe descartar, esta se pasa atrás... las válidas son las 'cantidad-1' primeras en el array de ese jugador
        jugadores(turno).cartas( i ) = jugadores(turno).cartas( k )  
        jugadores(turno).cartas( k ) = n
    fin si
    jugadores(turno).cantidad -=1  

    
    // evaluar si es un as y que as, es
    si ((n modulo 10) = 0 ) luego  // ¿la carta 'n' es un AS?
        n = (n / 10)  // ¿qué AS, es?  0, 10, 20, 30 // por ejemplo oros, copas, espadas y bastos, respectivamente, tu decides...
        // Si (n = AsPalo) luego ... caso de que deba ser un as especifico y no cualquiera de ellos
            // retirar una carta a cada uno de los jugadores restantes (sin saber que se hace con ellas, se supone que solo se le retira 1 y nada más)
            bucle para j desde 0 a numJugadores-1
                Si (j <> turno) luego //distinto de   //no se puede quitar carta a sí mismo.
                     si  (jugadores(j).cantidad >0) luego
                          jugadores(j).cantidad -=1   //le quitamos la última, si es al azar,
                                    // proceder como más arriba, elegir al azar entre las que reste
                                    // intercambiarla por la última 'válida' y restar una a la cantidad.
                     fin si
                fin si
            fin bucle
        // fin si
    fin si


    devolver ((turno + 1) modulo numJugadores) //0-1-2-3-0-1-2-3-0-1-2--->3--->0
fin funcion

Para entender correctamente el pseudocódigo considera lo siguiente:
- La baraja tiene 40 cartas, una copia por cada carta, que han sido barajadas x veces.
- El array 'baraja' representa la banca.
- La banca cuando reparte cartas, aumenta el índice en tantas cartas como reparte, las de más abajo están en uso, las que restan hasta 39, siguenen la banca.
- Las cartas del jugadores, sigue el orden al revés, dado que no hay forma de saber cuantas cartas tendrá en algún momento, cuando se le retira una, se intercambia de orden con la del final de las que le quedan válidas, y su cuenta se reduce en uno.
- Los valores de las cartas  en la baraja van del 0 al 39. 0-9 las 10 cartas de un palo, 10-19, las de otro, 20-29 otro y 30-39 el último palo. Usar dos barajas es aumentar el array al doble y proceder con la misma idea, solo que se consideran cartas iguales (x y n) si:  
Código:
buleano = funcion Iguales(entero x, entero n)
  devolver ((x modulo 40) = (n modulo 40))
fin funcion
- Observa que la función SiguienteTurno, puede llevar más parámetros, por ejemplo para que el jugadordecida si quiere jugar su AS (como tu reclamas), pasando a la función el índice de la misma....
- Se supone que los turnos, son una vez cada uno. Si no es así, se deb modificar la devolución en la función 'SiguienteTurno'. Para el caso, (por simplicidad y claridad), tampoco se ha previsto el caso de que un jugador esté descartado y por tanto deba ceder el turno a otro.
- La función 'SiguienteTurno', simplemente está evaluando que carta juega el jugador que tiene el turno, y verifica si es un as en cuyo casoretira una carta a cada jugador (pero no se las asigna así mismo, es decir no se apodera de ellas), y da por hecho que jugar una carta supone perderla, descartando por tanto al jugador de esa carta...

...es realmente sencillo, espero que lo entiendas correctamente...
49  Programación / Ejercicios / Re: Ejercicio de sudoku en java en: 22 Noviembre 2017, 17:53
pero en mi caso yo tengo que crear yo mismo la matriz (el sudoku) de 9*9 y comprobar si esta bien y todo
Exactamente eso es lo que se trata allí... crear el sudoku, permitir al usuario ir rellenando el suyo, e ir comparando las entradas del usuario con lo guardado en memoria, y verificar el resultado final...

pero ustedes en ese caso utilizaron import java.util.Random para generar numeros aleatorios y empezando por ahi ya se hace el ejercicio un tanto diferente.
No importa qué función utilices para obtener los valores al azar.
De hecho otro modo  es empezar con un 9 valores1, 9 valores 2, 9 valores3, etc... y en tal caso lo que se eligiría al azar ahora no serían los valores, si no donde ubicarlos, sabiendo que en cada fila, columna o bloque solo debe contener 1.
No cambia el resultado ni la mayoría de operaciones, tan solo algo el generador de sudokus.

Básicamente se compone de 3 partes:
- Generar el sudoku.
- Interacción con el usuario (la parte de la interfaz)
- Las verificaciones como respuesta a la entrada del usuario.
Aunque no están claramente separadas, si puede resumirse así, incluso podría clasificarse de esa manera, aunque no es estrictamente necesario.

de todos modos, el usuario empezó por lo que tenía al ir avanzando en el tema fue cambiando cosas... tu lee y revisa y codifica y prueba... Si tienes dudas, casi mejor pregunta allí.


50  Foros Generales / Noticias / Re: Uber ocultó durante más de un año un robo masivo de datos de 57 millones de ... en: 22 Noviembre 2017, 17:39
Aunque Uber, parece una apuesta segura y hasta cierto punto cómoda a pesar de las quejas de los gremios afectados, cada vez queda más claro y fuera de toda duda, que la empresa apesta por los 4 costados y no parece que terminen de sacudirse las pulgas...
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 93
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines