You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
type
archivo = fileof integer;
Var
m: archivo;
begin
assign (m, 'maestro.data');
End.
Se asume que los assing(archivo, 'nombre') se encuentran fuera del modulo
Crear
Un_Archivo_Desde_Teclado
procedureCrear(var m:archivo);
var
dato:integer;
begin
rewrite(m);
read(dato);
while (dato <> 0) dobegin
write(m,dato);
read(dato);
end;
close(m);
end;
Un_Archivo_Desde_Teclado_ConRegistros
procedureleerRegistro(var dato:registro);
begin
write('Numero de usuario: '); readln(dato.nro);
if dato.nro <> vA thenbegin
write('Destinatario: '); readln(dato.cuentaDestino);
write('Mensaje: '); readln(dato.cuerpoMensaje);
end;
end;
//________________________________________procedureCrear(var m:archivo);
var
dato: registro;
begin
rewrite(m);
leerRegistro(dato);
while(dato.nro <> vA)dobegin
write(m,dato);
leerRegistro(dato);
end;
close(m);
end;
Un_Archivo_Desde_un_Texto
procedureCrear(var m:archivo;var txt:text);
var
dato: registroM;
begin
reset(txt);
rewrite(m);
while(not eof(txt))dobeginwith dato do
read(txt, color);
write(m,dato);
end;
close(m);
close(txt);
end;
Un_Texto_Desde_un_Archivo
procedureCrearTXT(var m: archivoM;var txt:text);
var
dato: registroM;
begin
rewrite(txt);
reset(m);
whilenot eof(m)dobegin
read(m,dato);
with dato do
writeln(txt,nroUsuario,'',cantMailsEnviados);
end;
close(m);
close(txt);
end;
Imprimir
Un_archivo_que_esta_Desordenado
Procedureimprimir(var m:archivo);
var
dato:integer;
begin
reset(m);
whilenot eof(m) dobegin
read(m, dato );
write(dato);
end;
close(m);
end;
Un_archivo_que_esta_Ordenado
procedureleer(var m:archivo; var dato:Integer);
beginif(not eof(m))then
read(m,dato)
else
dato:=vA;
end;
//__________________________________________procedureimprimirOrd(var m:archivo);
var
dato,actual:Integer;
total:Integer;
begin
reset(m);
leer(m,dato);
while (dato <> valoralto) dobegin
actual:= dato;
total:=0;
while(actual = dato)dobegin
total:=total+dato;
leer(m,dato);
end;
writeln('El total de ',actual,' es : ', total);
end;
close(m);
end;
Actualizar
Procedureactualizar(Var archx:archivo);
var
datox: integer;
begin
Reset(archx);
whilenot eof(archx) dobegin
Read(archx,datox);
datox:= datox * 2;
Seek(archx,filepos(archx)-1);
Write(archx,datox);
end;
close(archx);
end;
Agregar
ProcedureAgregar(var m:archivo);
var
nro: integer;
begin
reset(m);
seek(m,filesize(m));
read(nro);
while (nro <> 10) dobegin
write(m,nro);
read(nro)
end;
close(m);
end;
Corte_De_Control
procedureUn_Archivo_desde_otro_archivo(var m,d:archivo);
procedureLeer(var d:archivo;var dato:Integer);
beginif (not eof(d)) then
Read(d,dato)
else
dato:=vA;
end;
var
total,datoD,datoM:integer;
begin
Reset(m);
Reset(d);
Leer(d,datoD);
while datoD <> vA dobegin
total:=0;
Read(m,datoM);
while (datoM <> datoD) and (datoD <> vA) do
Read(m,datoM);
while datoM = datoD dobegin
total:=total+datoD;
Leer(d,datoD);
end;
Seek(m,FilePos(m)-1);
Write(m,total);
end;
Close(m);
Close(d);
end;
Merge
Declarar
type
archivo = fileof integer;
vector_archivo = array [1..dimF] of archivo; //Vector para procesar N detalles
vector_datos = array [1..dimF] of integer; //Los datos de los detalles
Cuando tenemos un archivo que esta ordenado por mas de una condición
procedureminimo(var vd:vector_archivo; var vdr:vector_datos;var min:registro);
var
i,minPos:integer;
begin
min.cod:=9999;
min.fecha:=22221231;
for i:=1to dimF dobeginif (vdr[i].cod < min.cod) thenbeginif (vdr[i].fecha < min.fecha) thenbegin
min:=vdr[i];
minPos:=i;
end;
end;
end;
if (min.cod <> valoralto) then
leer(vr[minPos],vdr[minPos]);
end;
Crear_Maestro
proceduremerge(var m:maestro;var vd:vector_detalle;var vdr:vector_detalle_registro);
var
min:carrera;
datoM:registroM;
actual:carrera;
begin
Rewrite(m); ResetDetalles(vd,vdr);
minimo(vd,vdr,min);
while (min.dni <> VA) dobegin
actual:=min;
while actual.dni = min.dni dobegin
datoM.kms_total:= datoM.kms_total + min.kms;
datoM.ganadas:= datoM.ganadas + min.ganoSiNo;
minimo(vd,vdr,min);
end;
write(m,datoM);
end;
Close(m); CloseDetalle(vd);
end;
Actualizar_Maestro
proceduremerge(var m:archivo;var vd:vector_archivo;var vdr:vector_datos);
var
datoM:registro;
min:registro;
begin
Reset(m);
ResetDetalles(vd,vdr);
minimo(vd,vdr,min);
while min.codigo <> vA dobegin
LeerM(m,datoM);
while (datoM.codigo <> min.codigo) do
LeerM(m,datoM);
while datoM.codigo = min.codigo dobegin
datoM.cantidad:=datoM.cantidad+min.cantidad;
minimo(vd,vdr,min);
end;
Seek(m,FilePos(m)-1);
Write(m,datoM);
end;
Close(m);
CloseDetalles(vd);
end;
Baja
Un_Dato_Sabiendo_Que_Existe
{se sabe que existe Carlos Garcia}procedurebajaLogica(var x:archivox);
var
datox:archivoxR;
begin
assign(x, 'x.data');
reset(x);
leer(x, datox);
while (datox.nombre <> 'Carlos Garcia') do leer(x, datox);
datox.nombre := '***';
seek(x, filepos(x)-1);
write(x, datox);
close(x);
end.
Un_Dato_Sin_Saber_Si_Existe
procedureUn_Dato_Sin_Saber_Si_Existe(var m:archivo;nro_baja:Integer);
procedureLeer(var m:archivo;var dato:integer);
beginifnot eof(m) then
read(m,dato)
else
dato:=vA;
end;
var
dato:integer;
begin
reset(m);
Leer(m,dato);
while (dato <> vA) and (dato <> nro_baja) do Leer(m,dato);
if dato <> vA thenbegin
Seek(m,FilePos(m)-1);
dato:=-1;
Write(m,dato);
end;
close(m);
end;
Un_Dato_Ingresado_Desde_Teclado
procedurebajaLogica(var x:archivo);
var
datox:empleado;
ultimoR:empleado;
nro:integer;
begin
reset(x);
Seek(x,FileSize(x)-1); {Guardo el ultimo Registro}
leer(x,datox);
reset(x); {Abro el archivo desde el princio, no se si es buena practica, despues me fijo en el libro}
leer(x,datox);
WriteLn('Ingrese el nro del empleado que quiere eliminar: ');
ReadLn(nro);
while (datox.nro <> nro) and (datox.nro <> valorAlto) do leer(x, datox);
if (datox.nro <> valorAlto) thenbegin
seek(x, filepos(x)-1);
write(x, datox);
seek(x, FileSize(x)-1);
Truncate(x);
endelse
WriteLn('No se encontro el nro del empleado');
close(x);
end;
Un_Dato_Ingresado_Desde_Teclado2
procedurebaja(var arch:maestro);
var
n,actual:novela;
num,pos:integer;
begin
reset(arch);
read(arch,actual);
writeln('Ingrese el codigo de la novela a eliminar:');
readln(num);
leer(arch,n);
while (n.codigo <> num) do//busco hasta encontrar el numero
leer(arch,n);
if n.codigo = num thenbegin//si lo encuentro guardo la posicion
pos:=filepos(arch)-1; //guardo la posicion de la baja
n:=actual;
seek(arch,pos);
write(arch,n); //sobreescribo la baja con los datos de cabecera
actual.codigo:=-pos;
seek(arch,0); //me paro en el principio de la lista
write(arch,actual);
endelse
writeln('No se encuentra el codigo.');
close(arch);
end;
De_Datos_desde_un_archivo
procedurebajaLogica(var m:maestro;var d:detalle);
var
datoM:prenda;
datoD:Integer;
begin
Reset(m); Reset(d);
LeerD(d,datoD);
while datoD <> valorAlto dobegin
LeerM(m,datoM); //Leo lo que tengo en la cabecerawhile datoM.cod_prenda <> valorAlto dobeginif (datoM.cod_prenda = datoD) thenbegin
datoM.stock:=-1;
Seek(m,FilePos(m)-1); Write(m,datoM);
end;
LeerM(m,datoM);
end;
LeerD(d,datoD);
end;
Close(m); Close(d);
end;
Un_Dato_Ingresado_Desde_Teclado3
procedureBajaLogica(var m:maestro);
var
datoM:ave;
codigoAve:integer;
begin
Assign(m,'maestro.data');
Reset(m);
WriteLn('El codigo del ave que quiere eliminar: ');
ReadLn(codigoAve);
while codigoAve <> 500dobegin
Leer(m,datoM); //Leo lo que tengo en la cabecerawhile datoM.codigo <> valorAlto dobeginif (datoM.codigo = codigoAve) thenbegin
datoM.codigo:=-1;
Seek(m,FilePos(m)-1); Write(m,datoM);
end;
Leer(m,datoM);
end;
WriteLn('El codigo del ave que quiere eliminar: ');
ReadLn(codigoAve);
Seek(m,0);
end;
Close(m);
end;
Baja_Fisica
Con_Archivo_Auxiliar
procedurebajaFisica(var m,mAux:maestro);
var
datoM:prenda;
begin
Reset(m); Rewrite(mAux);
LeerM(m,datoM);
while datoM.cod_prenda <> valorAlto dobeginif (datoM.cod_prenda = -1) then
Write(mAux,datoM);
LeerM(m,datoM);
end;
Close(m); Close(mAux);
Erase(m); //Elimino el archivo maestro
Rename(mAux,'maestro');
end;
procedurecompactar(var a:archivo;n:integer);
var
pos:integer;
dato:cosa;
begin
reset(a);
Leer(a,dato);
while (dato.codigo <> VA) dobeginif (dato.codigo=n) thenbegin
pos:= (filePos(a)-1); // pos 0
seek(a,fileSize(a)-1);
read(a,dato); //me quedo con el elemento al final del archivowhile (dato.codigo = n) dobegin
seek(a,fileSize(a)-1);
truncate(a);
seek(a,fileSize(a)-1);
read(a,dato);
end;
seek(a,pos);
write(a,dato);
seek(a,fileSize(a)-1);
truncate(a);
seek(a,pos);
end;
Leer(a,dato);
end;
close(a);
end;
Alta
Un_Registro_Ingresado_Desde_Teclado
procedureAlta(var m:maestro);
var
cabecera,n:novela;
begin
Reset(m);
leer(m,cabecera);
LeerNovela(n);
if (cabecera.codigo = 0) thenbegin//Si tengo la cabecera vacia agrego el elemento al final
Seek(m,FileSize(m));
Write(m,n);
endelsebegin//Ej si el resultado es -5 voy a la posicion 5//(La cabecera siempre tiene que ser un nro negativo o 0)
Seek(m,(cabecera.codigo*(-1)));
//Una vez que me ubico, en el lugar libre, remplazo el elemento
read(m,cabecera);
Seek(m,FilePos(m)-1);
Write(m,n);
Seek(m,0);
Write(m,cabecera);
//Guardo el elemento que habia en la posicion 5end;
Close(m);
end;