Ver Mensaje Individual
  #1  
Antiguo 05-09-2011
juanch_mc juanch_mc is offline
Registrado
 
Registrado: may 2010
Posts: 2
Reputación: 0
juanch_mc Va por buen camino
Exclamation Listas enlazadas simples Ayuda!

Buenas colegas!
Estoy teniendo problemas para idear un procedimiento, hace 2 días que vengo pensando como podría hacerlo, pero no he podido llegar a ningún resultado conciso. Si alguien me puede dar una mano se los agradecería muchisimo.

Paso a describir el problema: Necesito un procedimiento que recorra un registro denominado ME(metodo estructural) el cual a su vez esta compuesto de dos registros, uno de datos, y otro de control.
El registro de control guarda las posiciones: primero y ultimo (en una estructura de listas enlazadas.
El registro de datos guarda informacion sobre movimientos en cuentas bancarias, y se compone entre otros, por: numero de cuenta, fecha, haber, debe, saldo y enlace (del siguiente registro) siendo el saldo el resultado de: haber -(menos) debe.

En el ME (registro principal) se guardan muchos movimientos de cuentas, y lo que necesito hacer es recorrerlo por completo (de control.primero a control.ultimo) y listar el saldo de cada cuenta a una fecha Y ingresada por el usuario.

Por ejemplo: Movimientos de cuentas
Código:
Cuenta       fecha      haber     debe     saldo
00000        31/3       100 	  00 	    100
00011 	     31/3       000      100       -100
00000         2/4       000       50         50
00011         3/4       250       00        150
Si al procedimiento le ingreso la fecha 02/04, me deberia listar lo siguiente
Código:
Saldos a la fecha 02/04

  Cuenta       saldo
  00000          50
  00011        -100
Todo el recorrido lo debo realizar utilizando los enlaces de cada registro.

Hasta ahora lo que tengo en mente es:
Código Delphi [-]
  if (not estructura_vacia(me)) then
  begin
    seek(me.c,0);
    read(me.c,RC); //RC= registro control auxiliar
    pos:= RC.primero;
    saldo:=0;
    while(rd.enlace <> null);  // cuando el enlace es "null" se trata del ultimo
    begin
      seek(me.d,pos);
      read(me.d, RD); //RD= registro de datos auxiliar
      cuenta:=rd.cuenta;
      while (cuenta=rd.cuenta) do
      begin
         //...... y ahí me quedo....
Estoy trabado cuando tengo que comprobar si hay mas registros con el mismo numero de cuenta y que la fecha de operacion sea menor o igual a la que ingresa el usuario....

Desde ya muchas gracias!!!!

Última edición por ecfisa fecha: 05-09-2011 a las 09:29:26. Razón: Agregar etiquetas vB
Responder Con Cita