ayuda para ordenar archivos de acceso secuencial.
{Espero esto te ayude fíjate entro los datos, los guardo, los presento sin ordenar, los ordeno
y los presento ordenados suerte}
program pruorena;
uses
crt;
const
archivo = 'prueva.ord';
noreg : array[1..8] of string[20] = (
'Anjelito','Francisco','Unverto','Venito','Luciano','Emilio',
'Paco','Galiano');
type
regprue = record
nume : integer;
nombre : string[20];
end;
var
f : file of regprue;
pru : array[1..2] of regprue;
nu : array[1..8] of integer;
k : integer;
procedure guarda(nomb : string);
begin
assign(f,nomb);
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
rewrite(f);
seek(f,0);
write(f,pru[1]);
close(f);
end
else
begin
seek(f,filesize(f));
write(f,pru[1]);
close(f);
end;
end;
procedure entradas;
var
i, t, si, alt : integer;
begin
randomize;
i := 1;
repeat
alt := random(9);
si := 0;
t := 1;
repeat
if nu[t] = alt then
begin
si := 1;
end;
t := t + 1;
until (t > 8) or (si = 1);
if si = 0 then
begin
nu[i] := alt;
i := i + 1;
end;
until i > 8;
end;
procedure ordenardiccionario;
var
hl, il, len : longint;
tempo : regprue;
begin
assign(f,archivo);
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
writeln('Archivo <', archivo, ' > no Encontrado');
halt(1);
end
else
begin
len := filesize(f) - 1;
for il := 0 to len do
begin
seek(f,il);
read(f,pru[1]);
for hl := len downto il do
begin
seek(f,hl);
read(f,pru[2]);
if pru[1].nume > pru[2].nume then
begin
tempo.nume := pru[1].nume;
tempo.nombre := pru[1].nombre;
pru[1].nume := pru[2].nume;
pru[1].nombre := pru[2].nombre;
pru[2].nume := tempo.nume;
pru[2].nombre := tempo.nombre;
seek(f,il);
write(f,pru[1]);
seek(f,hl);
write(f,pru[2]);
end;
end;
end;
close(f);
end;
end;
procedure muestra_archivo(x : integer; nomb : string);
var
co, tama : longint;
h : integer;
begin
assign(f,archivo);
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
writeln('Archivo <', archivo, ' > no Encontrado');
halt(1);
end
else
begin
tama := filesize(f) - 1;
for co := 0 to tama do
begin
seek(f,co);
read(f,pru[1]);
gotoxy(x,2 + co);write('N§ = ',pru[1].nume,' Nombre = ',pru[1].nombre);
end;
close(f);
end;
end;
begin
clrscr;
entradas;
for k := 1 to 8 do
begin
pru[1].nume := nu[k];
pru[1].nombre := noreg[k];
guarda(archivo);
end;
clrscr;
gotoxy(2,1);write('Archivo sin Ordenar');
muestra_archivo(2, archivo);
ordenardiccionario;
gotoxy(40,1);write('Archivo Ordenar');
muestra_archivo(40, archivo);
readln;
erase(f);
end.