
Ayuda con archivo de baja
Publicado por Leo G. (11 intervenciones) el 27/11/2014 14:46:14
Hola tengo un problema con este código no puedo encontrar el error.
1. Se dispone de un archivo maestro de una encuesta y un archivo de bajas con el siguiente diseño:
Archivo maestro: Un registro por encuestado
DEPARTAMENTO Nº ENCUESTADO NOMBRE Y APELLIDO FECHA DE NACIMIENTO
Archivo de bajas: Uno o ningún registro por encuestado
DEPARTAMENTO Nº ENCUESTADO
Aparear los archivos a fin de detectar los encuestados a dar de baja, grabando un archivo maestro actualizado sin las bajas. Si la baja no existe en el maestro, imprimir "BAJA ERRÓNEA" en Observaciones y contarlas. Informar la cantidad total de bajas correctas y erróneas.
Salida impresa:
Departamento Nº Encuestado Nombre y Apellido Fecha Nacimiento Observaciones
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX B. ERRÓNEA
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX B. ERRÓNEA
Total General de Bajas Correctas: XXX Erróneas: XXX
y tengo esto codificado.
1. Se dispone de un archivo maestro de una encuesta y un archivo de bajas con el siguiente diseño:
Archivo maestro: Un registro por encuestado
DEPARTAMENTO Nº ENCUESTADO NOMBRE Y APELLIDO FECHA DE NACIMIENTO
Archivo de bajas: Uno o ningún registro por encuestado
DEPARTAMENTO Nº ENCUESTADO
Aparear los archivos a fin de detectar los encuestados a dar de baja, grabando un archivo maestro actualizado sin las bajas. Si la baja no existe en el maestro, imprimir "BAJA ERRÓNEA" en Observaciones y contarlas. Informar la cantidad total de bajas correctas y erróneas.
Salida impresa:
Departamento Nº Encuestado Nombre y Apellido Fecha Nacimiento Observaciones
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX B. ERRÓNEA
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX XXXXXXXXXXXX XX/XX/XX
XXXXX XXXXX B. ERRÓNEA
Total General de Bajas Correctas: XXX Erróneas: XXX
y tengo esto codificado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
Program Bajas;
uses crt;
type
maestro=record
depar:integer;
n_encu:integer;
nom_ape:string[50];
fech_nac:string[10];
end;
detalle=record
depar:integer;
n_encu:integer;
end;
nuevo=record
depar:integer;
n_encu:integer;
nom_ape:string[50];
fech_nac:string[10];
obser:string[20];
end;
arch_maest=file of maestro;
arch_detall=file of detalle;
arch_nuevos=file of nuevo;
var
maes:arch_maest;
deta:arch_detall;
nuev:arch_nuevos;
Procedure Carga(var mae:arch_maest;var det:arch_detall);
var
tecla:char;
x:char;
regmae:maestro;
regdet:detalle;
BEGIN
tecla:='d';
x:='r';
rewrite(mae);
writeln(' <----------> CARGA DE MAESTRO <----------> ');
writeln;
write('Desea ingresar un registro? S/N: ');
readln(tecla);
writeln;
while(upcase(tecla)<>('N'))do
begin
write('Ingrese el Numero del Departamento: ');
readln(regmae.depar);
write('Ingrese el Numero de Encuestado: ');
readln(regmae.n_encu);
write('Ingrese el Nombre y Apellido: ');
readln(regmae.nom_ape);
write('Ingrese la Fecha de Nacimiento: ');
readln(regmae.fech_nac);
write(mae,regmae);
writeln;
write('Desea Seguir Ingresando un Registro? [S/N]: ');
readln(tecla);
writeln;
end;
close(mae);
rewrite(det);
writeln;
writeln(' <----------> CARGA DE DETALLE <----------> ');
writeln;
write('Desea Ingresar un Registro? [S/N]: ');
readln(x);
writeln;
while(upcase(x)<>('N'))do
begin
write('Ingrese el Numero de Departamento: ');
readln(regdet.depar);
write('Ingrese el Numero de Encuestado: ');
readln(regdet.n_encu);
write(det,regdet);
writeln;
write('Desea seguir ingresando un registro? S/N: ');
readln(x);
writeln;
end;
close(det);
END;
Procedure Actualizado (var det:arch_detall; var mae:arch_maest; var nue:arch_nuevos);
var
reg_mae:maestro;
reg_det:detalle;
reg_nue:nuevo;
cant_b_erro:integer;
cant_b_correcta : integer;
begin
reset(mae);
reset(det);
rewrite(nue);
read(mae,reg_mae);
read(det,reg_det);
cant_b_erro:=0;
cant_b_correcta := 0;
writeln('Dpto N°Encuestado Nombre y Apellido Fecha de Nacimiento Observaciones');
while ((not (EOF(mae)))and (not (EOF(det))))do
begin
if (reg_mae.n_encu<>reg_det.n_encu) then
begin
reg_nue.depar:=reg_mae.depar;
reg_nue.n_encu:=reg_mae.n_encu;
reg_nue.nom_ape:=reg_mae.nom_ape;
reg_nue.fech_nac:=reg_mae.fech_nac;
cant_b_correcta := cant_b_correcta + 1;
end
else
begin
reg_nue.depar:=reg_det.depar;
reg_nue.n_encu:=reg_det.n_encu;
reg_nue.obser:=' B.ERRONEA ';
cant_b_erro:=cant_b_erro+1;
end;
read(mae,reg_mae);
end;
if (reg_mae.n_encu<>reg_det.n_encu) then
begin
reg_nue.depar:=reg_mae.depar;
reg_nue.n_encu:=reg_mae.n_encu;
reg_nue.nom_ape:=reg_mae.nom_ape;
reg_nue.fech_nac:=reg_mae.fech_nac;
cant_b_correcta := cant_b_correcta + 1;
end
else
begin
reg_nue.depar:=reg_det.depar;
reg_nue.n_encu:=reg_det.n_encu;
reg_nue.obser:=' B.ERRONEA ';
cant_b_erro:=cant_b_erro+1;
end;
writeln('EL TOTAL GENERAL DE BAJAS CORRECTAS ES: ',cant_b_correcta,' ERRONEAS ES: ',cant_b_erro);
close(mae);
close(det);
close(nue);
end;
begin
assign(maes,'maestro.dat');
assign(deta,'detalle.dat');
assign(nuev,'nuevo.dat');
Carga(maes,deta);
Actualizado(deta, maes, nuev);
close(maes);
close(deta);
close(nuev);
end.
Valora esta pregunta


0