Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - do-while

#71
Sin tener los archivos poco podemos decirte, pero parece que no son archivos de texto sino binarios. Puedes editarlos con un editor hexadecimal, modificar los datos que quieras, siempre teniendo en cuenta que si son registros de un tamaño fijo tendrás que mantener la longitud de cada campo y de cada registro para no corromper el archivo, o intentar deducir la estructura de los registros que contiene y crear un programa que lea los bloques binarios para poder modificarlos.
#72
La anterior respuesta se puede concretar algo más.

Las principales operaciones que vas a hacer con una iso serán grabarlas en un CD/DVD, grabarlas en un pen para utilizarlo como Live USB/Instalación de sistemas operativos o incorporar el contenido de la iso al sistema de archivos para poder acceder al contenido del CD/DVD del que se ha obtenido la imagen.

Para gragar la iso en un CD/DVD tienes programas para aburrirte. Yo utilizo Xfburn, otros utilizarán Brasero y posiblemente cada usuario que vea el hilo te dirá que utiliza cualquier otro programa.

Para crear un Live USB también hay muchas herramientas. Entre ellas Unetbootin. No está en los repositorios de todas las distros, pero supongo que en la página oficial tendrán versiones para todos los formatos de paquetes (o para los más utilizados). De todas formas, en mi caso, no siempre he tenido buenos resultados utilizando estas herramientas, lo que nunca me ha fallado ha sido el comando dd.

Tanto si utilizas un programa de escritorio como si utilizas dd asegúrate de desmontar el pen antes de empezar a hacer nada. Puedes desmontar las unidades desde el mismo explorador de archivos, haciendo click derecho sobre la unidad y escogiendo la opción de desmontarla, o desde un terminal ejecutando, con permisos de administrador, fdisk -l, buscando el pen entre los dispositivos que te salen (tendrás que intuir cual es por la capacidad que tiene, así que es recomendable que el único dispositivo de almacenamiento que tengas conectado en ese momento sea el pen que vas a utilizar), y desmontarlo con umount. Por ejemplo, si hemos identificado /dev/sdc como nuestro pen, tendrás que ejecutar umount /dev/sdc.

Si para crear el USB arrancable vas a utilizar una herramienta de escritorio hasta aquí llega la aventura con el terminal (si has utilizado el explorador de archivos de tu entorno de escritorio ni si quiera te habrá hecho falta teclear ningún comando). Si vas a utilizar dd, suponiendo como antes que el dispositivo está identificado como /dev/sdc, solo tendrás que ejecutar dd if=ruta_a_tu_iso of=/dev/sdc. Y ya has acabado de crear tu pen.

Y por último, si quieres incorporar la iso a tu sistema de archivos para poder acceder al contenido del CD/DVD, solo tienes que ejecutar mount ruta_a_la_iso un_directorio_vacio (con permisos de administrador). Por ejemplo, suponiendo que en directorio /media tengas un subdirectorio llamado cdrom y que la iso que quieras montar sea mi_iso.iso y esté en el directorio /home/un_usuario, tendrías que ejecutar mount /home/un_usuario/mi_iso.iso /media/cdrom. En principio no tendrías que añadir ningún parámetro más. Para más información man mount. Cuando acabes con lo que tengas que hacer con la iso desmontas su sistema de archivos: umount directorio_en_el_que_hayas_montado_la_iso (siempre que utilices mount/umount ejecútalos como administrador)
#73
¡Gracias por la información!
#74
¡Gracias por vuestras respuestas!

MAFUS, gracias por la idea, pero prefiero evitar el uso de vectores, la idea de la lista es que la posición de cada elemento puede estar en cualquier posición de la memoria y así evito la restricción que tendría un vector de utilizar posiciones consecutivas. Una reasignación del vector podría fallar en caso de no poder asignar suficientes posiciones consecutivas, con la lista tradicional bastaría con que hubiese espacio suficiente para un nodo más.

invancea96 es lo que había pensado, olvidarme de las posiciones.

También estoy pensando en utilizar un árbol valanceado de punteros a los nodos para apoyar las búsquedas, inserciones y eliminaciones. ¿Merece la pena el intercambio memoria/tiempo de ejecución? Recuerdo que de momento estoy con listas ordenadas, los elementos repetidos son consecutivos y el árbol tiene sentido para las tres operaciones, cuando implemente las listas "normales" en principio no habrá ningun orden y el árbol dejará de tener sentido a no ser que sea un árbol de listas y en cada nodo almacene una lista de los nodos de la lista en los que se repite cada elemento, y aún así solo serviría para búsquedas y eliminaciones.
#75
¡Buenas!

He retomado un proyecto que empecé hace un tiempo sobre crear esctructuras de datos genéricas en C, y tengo alguna duda sobre qué tipo de dato debería devolver una búsqueda sobre una lista. La estructura contiene un puntero void* en el que se almacena el dato, y en un principio lo que estoy devolviendo en NULL si no encuentro el dato y void const* si lo encuentro para evitar modificar el dato (de momento estoy trabajando con listas ordenadas).

La cuestión es que este valor de retorno no da ningún tipo de información sobre la posicion que el elemento ocupa dentro de la lista, por lo que, por ejemplo, no se podría combinar una busqueda con la extracción de una sublista en caso de que haga falta seleccionar elementos dentro de un rango determinado. Si por el contrario utilizo un entero (lo más lógico sería un unsigned long) como valor de retorno, estaría limitando la cantidad de datos que se podrían almacenar al rango de valores de ese tipo de entero (un valor menos, teniendo en cuenta que tendría que escoger un valor de retorno, por ejemplo (unsigned long)(-1) para informar de que no ha habido ninguna coincidencia).

Otra alternativa sería buscar un elemento y devolver un puntero como comentaba antes, y en caso de que la búsqueda tuviese éxito utilizar una función que me devuelva la posición, pero seguiría existiendo la limitación sobre la cantidad máxima de datos que la lista podría contener.

Si alguna vez habéis trabajado con listas, ¿Cómo habéis enfocado el problema de la busqueda/posición de un elemento dentro de ésta?
#76
¡Buenas!

Desde hace unos meses (no recuerdo exactamente desde cuándo) y de forma que al menos a mi me parece completamente aleatoria no siempre es posible consultar el foro como visitante. En cuanto se accede al foro se redirige directamente a la página de inicio de sesión. Resulta molesto si solo se quiere entrar para ver por encima que novedades hay. No se si es un error o alguna medida de seguridad. Si es lo primero aquí queda el aviso, si es lo segundo, pues tocará pasar por el aro. XD

¡Saludos!
#77
Repetir un bucle en el que se generan datos aleatorios sobre una lista mientras haya una repetición es extremadamente ineficiente.

Lo que deberías de hacer es:

alfabeto="A...Z";

para i desde 0 hasta 19
 indice_aleatorio=aleatorio_entre_0_y_longitud_alfabeto

 si i != indice_aleatorio
   intercambiar(alfabeto[i], alfabeto[indice_aleatorio]
 fin si
fin para

ordenar los indices pares(desde 0 hasta 19) en orden ascendente

para i desde cero hasta 9
 mostrar alfabeto[2 * i] y alfabeto[2 * i + 1]
fin para
#78
g++ es el compilador de C++, si, como es el caso, te dice que no lo encuentra tendrás que instalarlo. Además, para compilar código en C puedes utilizar g++, pero yo utilizaría gcc, que es el compilador de C y ¿siempre? viene instalado por defecto, al menos en todas las distros que he utilizado..

Se me olvidaba la otra opción. Si tienes instalado g++ (dpkg -l g++, si aparece con ii es que está instalado, si no aparece como ii o directamente no aparece es que no está instalado) y estás utilizando un IDE, entre todas las opciones de configuración que tengas habrá alguna para decirle dónde se encuentra g++ (si está instalado: whereis g++)
#79
Y esto es lo que pasa cuando uno deja activada la casilla "Recordar contraseña", cuando no se cierran las sesiones o, en el caso de acceder vía web, no se utiliza navegación privada...

Si en lugar de ir a lo vago la madre hubiese ido a lo seguro y se hubiese tomado la molestia de escribir su nombre de usuario y contraseña cada vez que quisiese iniciar sesion en Amazon (o cualquier otro sitio) no hubiese habido gasto alguno...
#80
Programación C/C++ / Re: multiplo de 11,100 digitos
23 Diciembre 2016, 17:13 PM
A ver, matemáticas básicas de primaria. Un número es múltiplo de 11 si, empezando a contar por la cifra menos significativa, la diferencia entre la suma de las cifras que ocupan una posición impar y la suma de los que ocupan posiciones pares es un múltiplo de 11 (algebraicamente se demuestra con congruencias, pero no hace falta tanto detalle).

Por ejemplo:
 1903
  Cifras en posiciones impares: 3 y 9 que suman 12
  Cifras en posiciones pares: 0 y 1 que suman 1
  Diferencia de las sumas: 11 que es múltiplo de 11 y por lo tanto 1903 es múltiplo de 11.

En la práctica te da lo mismo empezar por las posiciones pares o impares, ya que si x es múltiplo de 11, -x también lo es, así que lo único que tendrás que hacer es ir sumando y restando las cifras según las vayas leyendo y comprobar si el resultado final es múltiplo de 11.

Por si hay alguna duda, cero es múltiplo de cualquier número 0 = 0 · x, así que si la diferencia es cero también será múltiplo de 11 (por ejemplo 132).