
URGENTE - ORDENAR REGISTRO POR CEDULA IDENTIDAD
Publicado por elias (45 intervenciones) el 15/11/2012 03:24:14
Saludos, tengo una duda con un trabajo practico de la Universidad, he avanzado bastante pero me falta hacer una ordenación de datos por número de cédula de identidad que quiero agregar a un procedure ya programado (Procedure Listar), intento con método de la burbuja pero no me funciona...aquí el esqueleto del código(suprimí varios procedures para enfocar lo mas importante)...
Program TRABAJOUNIVERSIDAD;
uses CRT, printer;
const
Max = 1000;
ubicacion='C:\ARCHIVO.dat';
Type
Registro=Record
Nom:String [30];
Ced: String [8];
Carnet:....;
Sexo:......;
Edad: .......;
Dir:....;
Tel:.....;
CentroEst:.....;
Eliminar:.......;
End;
ListaEstu = array [1..Max] of Registro;
Archivo= File of Registro;
Var
K, N, i, j, anio, c, entero, code, hombres, mujeres, mayores, numero, error, cap barq, mer, zul, nueva, fal:
integer;
Tipo: Char;
Lista : ListaEstu;
Aux : Registro;
vale:boolean;
Procedure SumaContadorHM;
End;
Procedure contadoredad;
End;
procedure PulsarUnaTecla;
end; { PulsarUnaTecla }
Procedure ContadorCE;
var
End;
Procedure Incluir(Var Arch:Archivo);
Var Reg:Registro;
c : integer;
Begin
writeln('************** TITULO TRABAJO **************');
WriteLn;
WriteLn( '******************** INCLUIR ********************');
WriteLn;
repeat
Write('Ingrese Cedula : ');
ReadLn(Reg.Ced);
val (Reg.Ced[7], numero, error);
until error= 0;
writeLn('El numero de Cedula ' , Reg.Ced , ' parece ser valida, presione Enter para continuar');
readkey;
repeat
Write('Ingrese Numero de Carnet : ');
repeat
Write('Ingrese Nombres y Apellidos : ');
Repeat
Write('Ingrese Sexo del Estudiante (M/F, en MAYÚSCULA): ');
Write('Ingrese Edad del Estudiante : ');
repeat
Write('Ingrese Direccion : ');
repeat
Write('Ingrese Telefono : ');
val (Reg.tel[11], numero, error);
Write('Ingrese Centro de Estudio ');
Reg.Eliminar:=False;
Reset(Arch);
If FileSize(Arch)<>0
Then Seek(Arch, FileSize(Arch));
Write(Arch, Reg);
Close(Arch);
WriteLn;
WriteLn('***** Presione ENTER para continuar *****');
ReadKey;
Ordenar (Lista);
End;
Procedure Eliminar(Var Arch:Archivo);
End;
Procedure Modif(Var Arch:Archivo);
End;
Procedure Listar(Var Arch:Archivo);
Var Reg:Registro;
Begin
Reset(Arch);
while Not Eof(Arch) Do
Begin
Read(Arch, Reg);
If Reg.Eliminar = False
then
WriteLn;
WriteLn('Cedula : ', Reg.Ced);
WriteLn;
End;
Close(Arch);
WriteLn;
WriteLn('***** Presione ENTER para continuar *****');
ReadKey;
End;
Procedure Consult(Var Arch:Archivo);
End;
Procedure Reporte(Var Arch:Archivo);
End;
Var
Arch:Archivo;
Opcion:Char;
Begin
Assign(Arch, ubicacion);
{$i-}
Reset(Arch);
{$I+}
If IOResult <> 0
Then ReWrite(Arch);
Close(Arch);
Repeat
ClrScr;
writeln('************** TITULO TRABAJO **************');
WriteLn;
WriteLn(' MENU');
WriteLn;
if contadorlapso= 1 then
begin
writeln(' AÑO: ',anio);
writeln(' lapso: ',lapso);
end;
WriteLn;
WriteLn('1 - ');
WriteLn('2 - ');
WriteLn('3 - ');
WriteLn('4 - ');
WriteLn('5 - ');
WriteLn('6 - ');
WriteLn('0 - ');
WriteLn;
Repeat
Opcion:=ReadKey;
Until (Opcion >= '0') And (Opcion <= '6');
Case Opcion of
'1':
'2':
'3':
'4':
'5':
'6':
End;
Until Opcion = '0';
END.
Program TRABAJOUNIVERSIDAD;
uses CRT, printer;
const
Max = 1000;
ubicacion='C:\ARCHIVO.dat';
Type
Registro=Record
Nom:String [30];
Ced: String [8];
Carnet:....;
Sexo:......;
Edad: .......;
Dir:....;
Tel:.....;
CentroEst:.....;
Eliminar:.......;
End;
ListaEstu = array [1..Max] of Registro;
Archivo= File of Registro;
Var
K, N, i, j, anio, c, entero, code, hombres, mujeres, mayores, numero, error, cap barq, mer, zul, nueva, fal:
integer;
Tipo: Char;
Lista : ListaEstu;
Aux : Registro;
vale:boolean;
Procedure SumaContadorHM;
End;
Procedure contadoredad;
End;
procedure PulsarUnaTecla;
end; { PulsarUnaTecla }
Procedure ContadorCE;
var
End;
Procedure Incluir(Var Arch:Archivo);
Var Reg:Registro;
c : integer;
Begin
writeln('************** TITULO TRABAJO **************');
WriteLn;
WriteLn( '******************** INCLUIR ********************');
WriteLn;
repeat
Write('Ingrese Cedula : ');
ReadLn(Reg.Ced);
val (Reg.Ced[7], numero, error);
until error= 0;
writeLn('El numero de Cedula ' , Reg.Ced , ' parece ser valida, presione Enter para continuar');
readkey;
repeat
Write('Ingrese Numero de Carnet : ');
repeat
Write('Ingrese Nombres y Apellidos : ');
Repeat
Write('Ingrese Sexo del Estudiante (M/F, en MAYÚSCULA): ');
Write('Ingrese Edad del Estudiante : ');
repeat
Write('Ingrese Direccion : ');
repeat
Write('Ingrese Telefono : ');
val (Reg.tel[11], numero, error);
Write('Ingrese Centro de Estudio ');
Reg.Eliminar:=False;
Reset(Arch);
If FileSize(Arch)<>0
Then Seek(Arch, FileSize(Arch));
Write(Arch, Reg);
Close(Arch);
WriteLn;
WriteLn('***** Presione ENTER para continuar *****');
ReadKey;
Ordenar (Lista);
End;
Procedure Eliminar(Var Arch:Archivo);
End;
Procedure Modif(Var Arch:Archivo);
End;
Procedure Listar(Var Arch:Archivo);
Var Reg:Registro;
Begin
Reset(Arch);
while Not Eof(Arch) Do
Begin
Read(Arch, Reg);
If Reg.Eliminar = False
then
WriteLn;
WriteLn('Cedula : ', Reg.Ced);
WriteLn;
End;
Close(Arch);
WriteLn;
WriteLn('***** Presione ENTER para continuar *****');
ReadKey;
End;
Procedure Consult(Var Arch:Archivo);
End;
Procedure Reporte(Var Arch:Archivo);
End;
Var
Arch:Archivo;
Opcion:Char;
Begin
Assign(Arch, ubicacion);
{$i-}
Reset(Arch);
{$I+}
If IOResult <> 0
Then ReWrite(Arch);
Close(Arch);
Repeat
ClrScr;
writeln('************** TITULO TRABAJO **************');
WriteLn;
WriteLn(' MENU');
WriteLn;
if contadorlapso= 1 then
begin
writeln(' AÑO: ',anio);
writeln(' lapso: ',lapso);
end;
WriteLn;
WriteLn('1 - ');
WriteLn('2 - ');
WriteLn('3 - ');
WriteLn('4 - ');
WriteLn('5 - ');
WriteLn('6 - ');
WriteLn('0 - ');
WriteLn;
Repeat
Opcion:=ReadKey;
Until (Opcion >= '0') And (Opcion <= '6');
Case Opcion of
'1':
'2':
'3':
'4':
'5':
'6':
End;
Until Opcion = '0';
END.
Valora esta pregunta


0