Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Preguntas sobre ficheros

Estas en el tema de Preguntas sobre ficheros en el foro de C/C++ en Foros del Web. Hola, Estoy comenzando con esto de ficheros o archivos pero mis profesores no lo explican muy bien, entonces he recurrido a internet. El trabajo que ...
  #1 (permalink)  
Antiguo 06/06/2015, 22:18
 
Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 10 años, 1 mes
Puntos: 0
Preguntas sobre ficheros

Hola,
Estoy comenzando con esto de ficheros o archivos pero mis profesores no lo explican muy bien, entonces he recurrido a internet.
El trabajo que tengo son varias clases, con listas genericas.

Mi pregunta es, para guardar/cargar por donde comienzo?
Puedo guardar todo en un mismo archivo? o tiene que ser un archivo para cada clase/lista?
hay problemas si las clases tienen punteros de las listas en los atributos?



saludos

Última edición por newb; 07/06/2015 a las 00:09
  #2 (permalink)  
Antiguo 08/06/2015, 10:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Preguntas sobre ficheros

Normalmente la idea es reconstruir la estructura que tienes.
Así que tienes que diseñar un algoritmo que guarde valores en el fichero, y que sepa como interpretarlos para su posterior lectura.

De forma esquemática, imagina que tienes una lista de 10 elementos.
Pues uno de los primeros datos que has de guardar sería ese número 10, que será el valor que usaras para crear un bucle de lectura o hacer una reserva de memoria. Luego de ese número, tendrás que guardar de forma ordenada cada valor de cada elemento de la lista, para ir creando en la lectura nuevos elementos y leyendo esos valores.
Se trata como te digo de un proceso de "reconstrucción". Por eso hay que diseñar la estrategia de reconstrucción de los datos para que la escritura y posterior lectura te permitan rehacer el trabajo.
__________________
Mi calculadora en Qt
  #3 (permalink)  
Antiguo 09/06/2015, 03:31
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Preguntas sobre ficheros

Poco más que añadir a lo comentado por @dehm. Pero por probar que no falte :)

Cita:
Iniciado por newb Ver Mensaje
Mi pregunta es, para guardar/cargar por donde comienzo?
No hay una única forma de guardar la información. Tienes que pensar la manera de organizar la información a guardar para luego recuperarla correctamente.

Cita:
Iniciado por newb Ver Mensaje
Puedo guardar todo en un mismo archivo? o tiene que ser un archivo para cada clase/lista?
Esta organización puede usar un fichero o varios, es indiferente. Lo único importante es que esté almacenada de tal forma que pueda recuperarse la información.

Lo que tienes que intentar es reducir al máximo la redundancia y facilitarte lo máximo posible la lectura de los datos.

Cita:
Iniciado por newb Ver Mensaje
hay problemas si las clases tienen punteros de las listas en los atributos?
En un fichero puedes guardar lo que te venga en gana. Únicamente tienes que preocuparte de que este todo correctamente estructurado.

Como estas respuestas, como tal, no te van a aclarar nada, vamos con ejemplos.

Por ejemplo, si tienes una lista de alumnos y luego esos alumnos se pueden apuntar a una o varias clases. Si tienes que guardar esta información puedes optar por varias opciones:

  • Puedes guardar, para cada clase, el listado de alumnos que pertenecen a la misma. Esta opción tiene mucha redundancia, ya que cada alumno puede aparecer varias veces y eso te acaba complicando la lectura del archivo
  • Puedes guardar, para cada alumno, el listado de clases a las que está apuntado. Esta opción tambien tiene bastante redundancia porque cada clase aparecerá repetida varias veces.


Estas han sido dos opciones malas. Las buenas, dado que los datos están relacionados entre ellos, es aprovechar las "relaciones". Con datos relacionales es importante que cada dato tenga un índice o un identificador único, de tal forma que puedas ser capaz de encontrar un elemento en una lista únicamente conociendo dicho identificador.

La idea entonces es aprovechar estos identificadores para establecer las relaciones.

En el caso del ejemplo, imaginemos que tenemos 3 alumnos y 2 clases:

Alumnos:
1. Roberto
2. Ana
3. Lara

Clases:
1. Matemáticas (Roberto y Ana)
2. Física (Ana y Lara)

Usando las relaciones podríamos almacenar los datos de la siguiente manera:
Alumnos:
id - nombre
1 - Roberto
2 - Ana
3 - Lara

Clases:
id - nombre
1 - Matemáticas
2 - Física

AlumnosPorClase:
clase - alumno
1 - 1 (Matemáticas - Roberto)
1 - 2 (Matemáticas - Ana)
2 - 2 (Física - Ana)
2 - 3 (Física - Lara)

Con esta estructura podemos leer primero el listado de alumnos, después el listado de clases y, finalmente, apuntar a los alumnos en las clases que le corresponden.

Esta es sólo una de las múltiples formas de guardar los datos.

También podría valer una tal que:
Alumnos:
id - nombre
1 - Roberto
2 - Ana
3 - Lara

Clases:
id - nombre - alumno1 - alumno2 - ...
1 - Matemáticas - 1 - 2
2 - Física - 2 - 3

Lo importante, al menos por el momento, es que sepas sacar partido a las relaciones y que aprendas a organizar los datos para almacenarlos en archivos.

Un saludo

Etiquetas: binario, c++, ficheros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.