• Miércoles 11 de Diciembre de 2019, 01:01

Autor Tema:  primer programa con archivos  (Leído 655 veces)

alexo0506

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
primer programa con archivos
« en: Sábado 27 de Marzo de 2010, 23:14 »
0
quisiera saber si me pueden ayudar con mi primer programa manejando archivos...
el compilador me tira 3 errores en las ultimas lineas y no me puedo dar cuenta del mismo. El programa en si... no hace nada importante, es solo un ejercicio de práctica. Muchas gracias de antemano
el programa en cuestion es el siguiente:
PROGRAM telefono;

USES crt;

const
constante=26.5;{pago arancel mensual}

type

reg=record
numero:integer;
pulsos:integer;
end;

tele=file of reg;

reg2=record
numero:integer;
pulsos:integer;
pago:real;
end;

deuda=file of reg2;

function factura(pulsos:integer):real;
var
extra:integer;
begin
if (pulsos>203) then begin
   extra:=pulsos-203;
   factura:=extra*0.0475;
   end;
end;

procedure nuevo(var nuevo2:deuda;arc:tele);
var
r:reg;
rnuevo:reg2;

begin
reset(arc);
reset(nuevo2);
read(nuevo2,rnuevo);
read(arc,r);
while (not EOF(arc)) do begin
   rnuevo.numero:=r.numero;
   rnuevo.pulsos:=r.pulsos;
   rnuevo.pago:=factura(r.pulsos);
    write(nuevo2,rnuevo);
   end;
close(arc);
close(nuevo2);
end;

procedure imprimir(nuevo:deuda);
var
resp2:char;
resp:integer;
r:reg2;
begin
repeat
begin
writeln('ingrese el numero del telefono del cliente a consultar:');
readln(resp);
reset(nuevo);
read(nuevo,r);
while (not EOF(nuevo)) do begin
   if (r.numero=resp) then begin
   writeln('numero cliente: ',r.numero);
   writeln('pulsos consumidos: ',r.pulsos);
   writeln('pago adeudado: ',r.pago);
   end;
end;
close(nuevo);
writeln('desea visualizar otro cliente? (s/n)');
readln(resp2);
end
until resp2='n';

end;{procedure}

var
arc:tele;
nuevo2:deuda;

BEGIN
assign(arc,'D:Sintaxis y Semántica del lenguajePrácticas resueltasPráctica 1telecomunicaciones.dat');
assign(nuevo2,'D:Sintaxis y Semántica del lenguajePrácticas resueltasPráctica 1pagos.dat');
nuevo(nuevo2,arc);
imprimir(nuevo2);
end.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: primer programa con archivos
« Respuesta #1 en: Domingo 28 de Marzo de 2010, 06:17 »
0
Los parámetros en las funciones o procedimientos que son de tipo file, file of o text deben ser parámetros por referencia, no por valor. Es decir, debes poner la cláusula "var" en los parámetros de tipo deuda y tele en tu programa.

procedure nuevo(var nuevo2:deuda; var arc:tele);
...
procedure imprimir(var nuevo:deuda);