Título: Problema lectura de datos Publicado por: Ockdatone en 11 Febrero 2014, 12:42 pm Buenos días, soy nuevo totalmente en C++ y lo primero a lo que me he tenido que enfrentar es a un problema muy complejo que tengo que resolver para mi doctorado. Obviamente los problemas comienzan nada más empezar con la lectura de datos que tengo que hacer, debido a que desconozco las dimensiones de los mismo. El tipo de datos es de este estilo:
1 2 3 4 # 11 20 53 89 68 98 65 59 86 38 11 28 73 64 58 # 235 236 278 958 985 642 285 852 374 591 # La cuestión es que yo no voy a conocer el tamaño de las matrices que voy a tener en el fichero, con lo cual quiero leer el fichero de la siguiente manera. Quiero que lea hasta que encuentre una # y me lo guarde en una matriz. Que siga leyendo hasta que encuentre otra # y me lo guarde en otra matriz distinta y así sucesivamente con las 20 o 30 matrices que utilice. ¿Podéis ayudarme? Gracias de antemano. Título: Re: Problema lectura de datos Publicado por: eferion en 11 Febrero 2014, 12:54 pm Usa contenedores de la stl... así te puedes despreocupar del tamaño de cada matriz.
Código
O bien puedes crearte una clase Matriz que encapsule este trabajo para que su manejo sea de lo más simple: Código
Este diseño es, desde luego, mejorable, pero el código no deja de ser una idea sobre cómo solucionar tu problema. Se me ocurren soluciones mucho más elaboradas y bonitas, pero se tarda más en diseñarlas. Título: Re: Problema lectura de datos Publicado por: Ockdatone en 11 Febrero 2014, 13:40 pm No me entero muy bien... Es que soy muy novato. Vamos a ver, yo lo que tengo es un archivo de datos, por ejemplo, datos.txt como el del ejemplo que puse. Cuando digo que no sé las dimensiones de las matrices (realmente no sé el número de filas, el de columnas sí, error mío al explicarme) es porque voy a leer distintos archivos de datos pues voy a tener varias instancias que es lo que me va a hacer variar el número de filas. Por tanto, no existe una forma de hacerlo del estilo,
while(carácter leído distinto de #) añadir a matriz1 while(carácter leído distinto de #) añadir a matriz 2 . . . y así hasta que haya leído todas las matrices de mi .txt Ya sé que no es muy elegante, pero eso es lo de menos, es por que sea sencillo para un novato. Gracias Título: Re: Problema lectura de datos Publicado por: eferion en 11 Febrero 2014, 13:51 pm para la lectura de ficheros deberías mirar la clase istream.
La clase que yo te he propuesto es una forma de almacenar una matriz de tamaño desconocido... parte de la premisa de que las matrices a leer están bien formadas ( igual número de columnas en todas las filas ). la idea a aplicar es más o menos así: Código
Ahora mismo no puedo ponerme con un diseño más elaborado, pero sirve para que te hagas una idea. |