Pascal/Turbo Pascal - Problema con programa

   
Vista:

Problema con programa

Publicado por Baltazar (2 intervenciones) el 13/12/2007 22:41:53
Hola que tal muchachos, les pido si alguien me puede ayudar a solucionar un problema. Es un programa que estoy haciendo para un trabajo practico, usé el DEV PASCAL, ya que con el turbo tenia incovenientes. El tema está que compila bien, pero aparece una pantalla en negro y dsp no avanza. Les copio la compilacion del programa principal. Un saludo!

program reajuste;
type
s4=string[4];
s40=string[40];
s5=string[5];
treg1=record
codemp:s4;
rasocial:s40;
cantra_ase:word
end;
treg2=record
codemp:s4;
leg:s5;
fecha:longint;
diaslicen:word
end;
tarchemp=file of treg1;
tarchacci=file of treg2;
tvec=array [1..10] of treg1;
treg3=record
cont:word;
porce:real
end;
tvec2=array [1..10] of treg3;
treg4=record
leg:s5;
acumina:word
end;
tinfo=treg4;
tlista=^tnodo;
tnodo=record
info:tinfo;
sigu:tlista
end;
tveclista=array [1..10] of tlista;

var
r:treg1;
reg:treg2;
archemp:tarchemp;
archacci:tarchacci;
vec:tvec;
vec2:tvec2;
veclista:tveclista;
i:longint;
fin:boolean;
clave:s5;
acum:word;
cont:word;
pos:byte;
regi:treg4;
p:tlista;
q:tlista;
porc:real;
posi:byte;
max:real;
a,n:byte;


procedure asignar_abrir_archivos
(var archemp:tarchemp;var archacci:tarchacci);

begin
assign(archemp,'arch1.dat');reset(archemp);
assign(archacci,'arch2.dat');reset(archacci);
end;

procedure copiar_archemp_en_vec
(var archemp:tarchemp;var vec:tvec);

begin
i:=0;
while not eof(archemp) do
begin
read(archemp,r);
inc(i);
vec[i].codemp:=r.codemp;
vec[i].rasocial:=r.rasocial;
vec[i].cantra_ase:=r.cantra_ase
end
end;

procedure inicializar_vec2
(var vec2:tvec2);

begin
for i:=1 to 10 do
begin
vec2[i].cont:=0;
vec2[i].porce:=0
end
end;

procedure crear_lista
(var veclista:tveclista);

begin
veclista[i]:=nil
end;

procedure leer_registro_del_archacci
(var archacci:tarchacci;var reg:treg2;var fin:boolean);

begin
if not eof(archacci) then
begin
read(archacci,reg);
fin:=false
end
else
fin:=true
end;

procedure bus_en_vector_empresas
(var vec:tvec;n:byte;reg:treg2;var pos:byte);

begin
pos:=0;
for i:=1 to n do
begin
if (vec[i].codemp=reg.codemp) then
pos:=i
end
end;

procedure insertanodo
(var veclista:tveclista;regi:treg4);

begin
new(p);
p^.info:=regi;
if (veclista[pos]=nil) or (regi.leg<veclista[pos]^.info.leg) then
begin
p^.sigu:=veclista[pos];
veclista[pos]:=p
end
else
q:=veclista[pos];
while (q^.sigu<>nil) and (regi.leg>q^.sigu^.info.leg) do
begin
q:=q^.sigu
end;
p^.sigu:=q^.sigu;
q^.sigu:=p
end;

procedure recorrer_archivo_y_llenar_vec_y_veclista
(var archacci:tarchacci;vec:tvec;var vec2:tvec2;var veclista:tveclista);

begin
for i:=1 to 10 do
begin
crear_lista(veclista)
end;

leer_registro_del_archacci(archacci,reg,fin);
while not eof do
begin
clave:=reg.leg;
acum:=0;
cont:=0;
bus_en_vector_empresas(vec,10,reg,pos);
while (not fin) and (clave=reg.leg) do
begin
acum:=acum+reg.diaslicen;
leer_registro_del_archacci(archacci,reg,fin)
end;
inc(cont);
vec2[pos].cont:=vec2[pos].cont+cont;
regi.leg:=clave;
regi.acumina:=acum;
insertanodo(veclista,regi)
end;

end;

function porcent(a,n: byte):real;

begin

porcent:=((n*100/a));

end;

procedure calcular_porcentaje_emitir_listado1
(vec:tvec; var vec2:tvec2);

begin
randomize();
for i:=1 to 10 do
a:= random(100);
n:= random(100);
while (a<n) do
begin
a:= random(100);
n:= random(100);
end;
porc:= porcent(a,n);
writeln(' Empresa', vec[i].rasocial, 'Porcentaje', porc);
vec2[i].porce:=porc
end;

procedure obtener_mayor_porcentaje_emitir_listado2
(vec:tvec;vec2:tvec2;veclista:tveclista);

begin
max:=vec2[1].porce;
for i:=2 to 10 do
begin
if vec2[1].porce>max then
begin
max:=vec2[i].porce;
posi:=i
end;
end;
p:= veclista[posi];
writeln('Empresa', vec[posi].rasocial);
while p<> nil do
begin
writeln('Legajo', p^.info.leg, 'Cantidad de inasistencias', p^.info.acumina);
p := p^.sigu
end;

end;

procedure cerrar_archivos
(var archemp:tarchemp; var archacci:tarchacci);

begin
close(archemp);
close(archacci)
end;

begin
asignar_abrir_archivos(archemp,archacci);
copiar_archemp_en_vec(archemp,vec);
inicializar_vec2(vec2);
recorrer_archivo_y_llenar_vec_y_veclista(archacci,vec,vec2,veclista);
calcular_porcentaje_emitir_listado1(vec,vec2);
obtener_mayor_porcentaje_emitir_listado2(vec,vec2,veclista);
cerrar_archivos(archemp,archacci)
end.


PD: si necesitan el programa para crear los archivos diganme. Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con programa

Publicado por preludio (17 intervenciones) el 14/12/2007 21:00:29
por q lo q estuve leyendo creo q puede ser esto:

1ºFIJATE si el archivo "arch1.dat" se encuentra en la misma carpeta de donde se encuentra el archivo ejecutable .pas.
es decir el archivo ".pas" y ".dat" tienen q estar en la misma carpeta.

si no es asi , vas a tener q especificar la ruta de acceso al archivo "arch1.dat"

por ejemplo:
assign(archemp,'c: ... arch1.dat'); {proba con y sin las comillas :P}

2º pero si lo tas creando al archivo .dat, te falta la sentencia REWRITE
es decir:

assign(archacci,'arch2.dat');
rewrite(archacci);
reset(archacci);

espero haberme explicado bien. xD

avisa como anduvo ese programa

nos vemos colega !
:P
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar