Ayuda urgente
El programa es muy basico, simplemente lo que hace es cargar datos (nombre, apellido, documento y sexo) y una vez que cargas los datos se le asigna un codigo. Este codigo es el numero de posicion del vector.
Una vez realizado todo lo anterior, el programa lo que hace es buscar los datos de una persona en particular a traves del codigo, pero cuando quiere mostrar los datos de la persona buscada, lo que muestra es cualquier cosa.
Alguien me puede explicar porque me muestra cualquier cosa y dar una posible solucion.
Muchas gracias.
program reg_vec;
uses
dos, crt;
const
max=10;
type
registro=record
apellido:string[20];
nombre:string[20];
documento:longint;
sexo:char;
end;
veclista=array[1..max] of registro;
var
lista:veclista;
{procedure limpiar (var A:veclista);
var
i:byte;
begin
for i:=1 to max do
with A do
begin
apellido:='';
nombre:='';
documento:=' ';
sexo:='';
end;
end;}
procedure carga (var A:veclista);
var
i:byte;
begin
i:=1;
repeat
clrscr;
write('Ingrese los datos');writeln;
write('-----------------');writeln;writeln;
with A do
begin
write('Apellido: ');readln(apellido);
write('Nombre: ');readln(nombre);
write('D.N.I: ');readln(documento);
write('Sexo: ');readln(sexo);
write('Su codigo es: ',i);
end;
writeln;
inc(i);
write('Desea ingresar mas datos (S/N): ');
until (upcase(readkey)='N') or(i>max);
end;
procedure mostrar (var A:veclista; n:byte);
var
info:registro;
begin
clrscr;
write('Sus datos son');writeln;
write('-------------');writeln;writeln;
with A[n],info do
begin
writeln('Apellido: ',apellido);
writeln('Nombre: ',nombre);
writeln('D.N.I: ',documento);
writeln('Sexo: ',sexo);writeln;
end;
readkey;
end;
procedure buscar (var A:veclista);
var
i,j:byte;
encontrado:boolean;
begin
encontrado:=false;
i:=1;
clrscr;
write('Ingrese su codigo: ');readln(j);
repeat
if (i = j) then
begin
mostrar(A,i);
encontrado:=true;
end;
inc(i);
until (encontrado=true) or (i>max)
end;
begin {Programa Principal}
clrscr;
{limpiar(lista);}
carga(lista);
buscar(lista);
end.
|