Escolar Documentos
Profissional Documentos
Cultura Documentos
Problema: Se supone que desde el men de barras de Pascal fue creado el archivo
c : \ archi04.dat y que est vaco. Leer de teclado los datos de un cierto nmero de alumnos
(nombre:string[6], nota:entero), no se sabe cuantos alumnos son, e ir guardndolos en dicho
archivo. A medida que se van leyendo los alumnos, ir asignndole nmeros enteros consecutivos
a partir de 1.
Listarlos e informar cuantos alumnos fueron grabados en el archivo.
Supongamos que nos piden que, ingresando un Nro. de alumno informemos Nombre y Nota
58
Algoritmos y Estructuras de Datos
Mas de una vez tendremos que trabajar con algn archivo que no sabemos si existe o no, pero si
existiera, no queremos perder los datos que contiene. No podemos usar rewrite.
Si usamos reset, en el momento de la ejecucin, el Sistema Operativo me informar de un error
de entrada/salida si no existiera. Para evitar esto, debo desactivar esta posibilidad a travs de la
instruccin {I-}. De esta manera podr seguir con el programa. Despus de una instruccin de
E/S, el Sist. Operat. devuelve un parmetro IORESULT que indica el tipo de error que encontr, si
vale cero es que no hubo error, si hubo error, entre otros valores, si devuelve 2, significa que el
archivo no fue encontrado. Es peligroso seguir con la verificacin desactivada, debo poner
enseguida {I+}.
Supongamos que se da esta situacin (de no saber si existe o no) con un archivo c:\opera.dat.
Mi programa debera comenzar mas o menos as:
Problema: Se supone que el archivo c : \ ejem.dat tiene una cierta cantidad (no se sabe
cuantos) de registros cargados. Se supone adems que el archivo c : \ alrreves.dat fue creado
desde el men de barras de Pascal y que est vaco. Se pide:
1) Listar el archivo ejem.dat
2) Grabar en alrreves.dat los registros de ejem.dat pero en el orden inverso
3) Listar alrreves.dat
program davuelta(input,output);
type libro=record nroint,codi,stock:integer;
titulo,autor:string[20];
precio:real
end;
negocio=file of libro;
var libros, dadovue : negocio ; aux:libro ; rta:char ;
n , i , k : integer ; (*) si en vez de tener alrreves.dat ya
begin assign(libros,'c:\ejem.dat'); creado, quisiramos crearlo en este
assign(dadovue,'c:\alrreves.dat'); programa, deberamos cambiar
reset(libros); reset(dadovue)(*); reset(dadovue) por rewrite(dadovue)
writeln('Nro Codigo Titulo Stock');
writeln('--- ------ -------------------- -----');
while not eof(libros) do
begin read(libros,aux) ;
writeln(aux.nroint:3,aux.codi:8,' ',aux.titulo,aux.stock:5)
end;
writeln('Fin del primer listado');
n:=filesize(libros);
for i:=1 to n do
begin k:= n-i;
60