Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Dudas sobre estructura de datos

Hola,

Estoy leyendo un fichero texto y guardando determinado dato en una arreglo de dos dimensiones. La dificultad esta en que los datos en el fichero no estan organizados. Debo entonces revisar todo el arreglo para ver si el read coincide con determinada condicion en mi arreglo, luego leer la posicion del ultimo valor guardado y ubicar el nuevo dato luego.

Lo he hecho con un arreglo de 2 dimensiones, varias funciones y condiciones. Me pregunto:

existira alguna estructura de datos(lista, fila, pila, etc) que me permita simplificar este proceso? existen funciones predefinidas de Delphi para busquedas de datos en matrices y determinacion de la proxima posicion nula ó 0 donde ubicar un nuevo dato?

gracias
Responder Con Cita
  #2  
Antiguo 02-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Anel Hernandez Ver Mensaje
Estoy leyendo un fichero texto y guardando determinado dato en una arreglo de dos dimensiones. La dificultad esta en que los datos en el fichero no estan organizados. Debo entonces revisar todo el arreglo para ver si el read coincide con determinada condicion en mi arreglo, luego leer la posicion del ultimo valor guardado y ubicar el nuevo dato luego.
Lo he hecho con un arreglo de 2 dimensiones, varias funciones y condiciones. Me pregunto:

existira alguna estructura de datos(lista, fila, pila, etc) que me permita simplificar este proceso? existen funciones predefinidas de Delphi para busquedas de datos en matrices y determinacion de la proxima posicion nula ó 0 donde ubicar un nuevo dato?
Hola Anel.

El problema para contestar a esa pregunta es que no explicas detalladamente en que consiste el proceso ni cuál es la condición u órden con que deberán almacenarse los datos leídos en el arreglo. No creo que se pueda aconsejar que determinada herramienta te simplificará un proceso del que no se conocen esos aspectos.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Hola,

pongo un ejemplo:

tengo datos de una escuela donde tengo el numero del aula y el nombre del estudiante. leo los datos de un fichero donde no aparecen esos datos y otros muchos mas. Me interesan solo algunas aulas, no todas y las especifico en mi arreglo. leo el fichero:
read(F,ss);

luego compruebo en un ciclo que el pos(Miarreglo[i,j],ss)<>0 para ver que el valor leido coincide con una de las aulas que me interesa. Luego paso a leer consecutivamente el dato del estudiante. asi hasta que termine el fichero.

lo que pasa que lo mismo puedo encontrar primero al aula 3, a la 5, luego a la 1, la 2, etc.

hasta ahora lo que hago es leer, comprobar que lo leido me interesa y luego buscar la primera posicion vacia para guardar el dato.

mas claro?

gracias mil
Responder Con Cita
  #4  
Antiguo 02-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Anel Hernandez Ver Mensaje
Hola,
pongo un ejemplo:

tengo datos de una escuela donde tengo el numero del aula y el nombre del estudiante. leo los datos de un fichero donde no aparecen esos datos y otros muchos mas. Me interesan solo algunas aulas, no todas y las especifico en mi arreglo. leo el fichero:
read(F,ss);

luego compruebo en un ciclo que el pos(Miarreglo[i,j],ss)<>0 para ver que el valor leido coincide con una de las aulas que me interesa. Luego paso a leer consecutivamente el dato del estudiante. asi hasta que termine el fichero.

lo que pasa que lo mismo puedo encontrar primero al aula 3, a la 5, luego a la 1, la 2, etc.

hasta ahora lo que hago es leer, comprobar que lo leido me interesa y luego buscar la primera posicion vacia para guardar el dato.

mas claro?
Si por favor.

Cuando te referis a que "los datos en el fichero no estan organizados", es a que los datos de la línea leída no tienen órden, ¿ O que las líneas no respetan órden numérico por aula ? (me hace dudar el uso de la función Pos)

Tampoco tengo claro el motivo de almacenar las aulas de interés en una matriz (Miarreglo[i,j]) para comprobar si el aula leida está entre ellas.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 02-11-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Carga el fichero en un stringlist, lo ordenas y lo manipulas a partir de ahí.

Si los campos no están ordenados, tendrías que cambiar el orden de los mismos para aprovecharte de las ventajas del stringlist.

pseudo código

Código Delphi [-]
function XX;
var Lineas: Tstrings;
begin
  Lineas:= TString.Create;
  Lineas.Loadfromfile('c:\fichero.txt'); -- cargas el fichero en el stringlist
  Lineas.Sort; -- ordenas 

  -- hacer lo que quieras

end;

Prueba y sigue preguntando.
Otra posibilidad es que si tienes los datos separados por algún carácter, puedas utilizar las funciones de Neftalí manejando datos con origen en ficheros de texto.
http://neftali.clubdelphi.com/?p=437

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 02-11-2011
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Tienes control sobre esa estructura? Puedes cambiarla?

Muchas veces los programas se complican porque la estructura es complicada. Es mucho mas simple optimizar los datos, que los algoritmos.

Si no puedes cambiarla, haz de todas maneras la tarea de pensar como seria su representacion ideal. Entonces puedes armarla en memoria, y leer de alli (si no es un archivo muy grande, o sea, de mas de 1 GB)
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Hola,

el fichero tiene lineas con el numero del aula y luego en las lineas siguientes algunos datos de los alumnos. Ej:

aula4
alumno4.2
alumno4.1
aula2
alumno2.3
alumno2.1
alumno2.4
aula5
alumno5.2
alumno5.1

y de nuevo pueden aparecer las mismas aulas con nuevos alumnos
aula4
alumno4.3

etc. compruebo con el pos porque no me interesan todas las aulas y la linea ademas del numero del aula puede tener mas informacion que por ahora no necesito.

almaceno en la matriz para tener en dos dimensiones, una las aulas y otra los alumnos.

mamcx,
los ficheros de texto no los puedo cambiar. son generados por otro programa. Yo solo puedo leerlo.

gracias
Responder Con Cita
  #8  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
fjcg02,
no me sirve asi pues las lineas vienen agrupadas por bloques encabezados por una fila que es la que identifico con el pos. Si ordeno todas las lineas pierdo los bloques.
Responder Con Cita
  #9  
Antiguo 02-11-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
tienes algo de codigo?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 02-11-2011
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
AUn no, lo tengo en la mente, esto buscando la manera menos engorrosa de hacerlo.

gracias
Responder Con Cita
  #11  
Antiguo 02-11-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Cita:
Empezado por Anel Hernandez Ver Mensaje
fjcg02,
no me sirve asi pues las lineas vienen agrupadas por bloques encabezados por una fila que es la que identifico con el pos. Si ordeno todas las lineas pierdo los bloques.
Tienes razón...

Yo manipularía los datos para dejar la información así

aula4-alumno4.2
aula4-alumno4.1
aula2-alumno2.3
aula2-alumno2.1
aula2-alumno2.4
aula5-alumno5.2
aula5-alumno5.1
aula4- alumno4.3

y lo cargaría en un TStringList, lo grabaría a otro fichero, y utilizaría la técnica de Neftalí para cargar los datos en un dataset.
Al cargar los datos los prepararía para que queden maqueados y luego sea más fácil manipularlos.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #12  
Antiguo 02-11-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Y no podrías subir el archivo txt para echarle un vistazo y poder ver la estructura, mas que nada para hacernos una mejor idea de como es y así poder darte una respuesta más acertada.

Saludos.
Responder Con Cita
  #13  
Antiguo 02-11-2011
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Tambien podrias utilizar una Lista doblemente enlazada (si es que todabia se usan jaja) y ahi podris ir ordenandolo Como quieras.

Otra Opcion

Manejar N StringList uno para Aula. y ahi cargar el alumo correspondiente. No seria muy Distinto al tema de la Lista y los regis.

si mal no recuerdo la declaracion seria algo asi (hace mucho que no lo utilizo)

Código Delphi [-]

Type
pAlumno:^TAlumno;
Talumno=record
  pAntAlumno: pAlumno;
  ID:Integer;
  Nombre:string;
  Apellido:String;
  pSigAlumno: pAlumno;
end;


tPunt=^Aulas;
Aulas=record
  pAnterior:TPunt;
  NroAula:Integer; 
  Alumno:TAlumno;
  pSiguiente:Tpun;
end;

Si te parece buena la idea. te comento como seria crear e insertar Los datos en la Lista.

Pero como te dije. con unos StringList tambien Podrias Ordenarlos, buscar y manipular la informacion.

saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sobre estructura de datos tiago_begins OOP 1 15-05-2011 23:53:28
Actualizar estructura de base de datos sin perder datos ManuelPerez Firebird e Interbase 8 20-10-2010 02:41:19
Estructura Case sobre el valor de un campo string amadis OOP 6 04-01-2007 02:56:11
dudas sobre base de datos Erkorud Conexión con bases de datos 2 18-08-2005 11:00:13
varias dudas sobre consultas y refresco de datos Giniromero Conexión con bases de datos 12 01-03-2004 12:50:11


La franja horaria es GMT +2. Ahora son las 11:24:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi