Ayuda con RECORDS y FILES
Publicado por Juanito (2 intervenciones) el 25/01/2008 02:38:18
Buenas, estoy con un programa pero no consigo realizar ciertas cosas.
Este es el código que llevo:
-------------------------------------------------------------------------------------------------------------------------------
program menu11;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
max_participantes=50; max_vueltas=100; max_long_nombre=255;
type
t_participante=record
nombre:string[max_long_nombre];
apellido:string[max_long_nombre];
dorsal:integer;
equipo:string[max_long_nombre];
end;
datos=array [1..max_participantes] of t_participante;
var
lista_completa:datos;
opc,cantidad,c:integer;
res:string[1];
busqueda:integer;
begin
{inicializo las variables}
repeat
{imprimo el titulo del menu}
writeln;
writeln('------------------------');
writeln('Gestion de Participantes');
writeln('------------------------');
writeln;
writeln;
{imprimo el menu}
Writeln(' 1.-Agregar participante');
Writeln(' 2.-Lista de participantes');
Writeln(' 3.-Busqueda de participante');
Writeln(' 4.-Guardar Participantes en archivo');
Writeln(' 5.-Cargar Participantes desde archivo');
Writeln(' 6.-Borrar participante');
Writeln(' 7.-Salir');
{pido la opcion del menu}
writeln;
Write(' -> Introduce la opcion que desees: ');Readln(opc);
case opc of
1: //Agregar Participantes
begin
for cantidad:=(cantidad +1) to max_participantes do
begin
writeln;
writeln('----------------------');
writeln('Agregar Participantes');
writeln('----------------------');
writeln;
writeln;
write(' -Nombre ',cantidad,': ');
readln(lista_completa[cantidad].nombre);
write(' -Apellido: ');
readln(lista_completa[cantidad].apellido);
write(' -Dorsal: ');
readln(lista_completa[cantidad].dorsal);
write(' -Equipo: ');
readln(lista_completa[cantidad].equipo);
writeln;
Write('Desea introducir otro participante? s/n: ');
Readln(res);
{si no, saco del ciclo}
if (res='n') OR (res='N') then break;
end;
end;
2: //Listar Participantes
begin
writeln;
writeln('------------------------');
writeln('Lista de Participantes');
writeln('------------------------');
writeln;
writeln;
for c:=1 to cantidad do
begin
writeln('--------------------------------------');
writeln('Nombre',c,': ',lista_completa[c].nombre);
writeln('Apellido: ',lista_completa[c].apellido);
writeln('Dorsal: ',lista_completa[c].dorsal);
writeln('Equipo: ',lista_completa[c].equipo);
writeln('-------------------------------------');
writeln;
end;{ciclo de impresion}
end;{fin de opcion 2 reporte de productos}
3: //Buscar participantes por dorsal
begin
Writeln('Buscar participantes por dorsal y mostrar el resto de datos')
end;
4: //Guardar participantes en un archivo
begin
Writeln('Guardar participantes en archivo')
end;
5: //Cargar Participantes desde archivo
begin
Writeln('Cargar participantes desde archivo');
end;
6: //Borrar participante
begin
Writeln('Borrar participante');
end;
end;{case}
until opc=7;
end.
-----------------------------------------------------------------------------------------------------------------------------
El programa tiene que realizar las siguientes acciones:
1.-Agregar participante
2.-Lista de participantes
3.-Búsqueda de participante por dorsal
4.-Guardar Participantes en archivo
5.-Cargar Participantes desde archivo
6.-Borrar participante
He conseguido implementar bien las dos primeras opciones. El problema me ha venido con el resto.
En el punto 3 hay que hacer una búsqueda por dorsal y que se muestren los datos del participante, tengo la impresión de que no debe ser muy difícil pero ni idea oye...
El 4 y el 5 lo mismo, no sé como guardar toda la información del record en un archivo y, por lo tanto no sé como cargar un archivo externo que sobreescriba el record del programa.
Y para terminar, no sé como borrar un participante en concreto del récord, primero porque necesito saber como buscar uno (apartado 3) y luego no sé cómo borrarlo.
En fin, no pido que me digáis todos los puntos que me faltan, con uno me conformo xDDD
Gracia de antemano.
Este es el código que llevo:
-------------------------------------------------------------------------------------------------------------------------------
program menu11;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
max_participantes=50; max_vueltas=100; max_long_nombre=255;
type
t_participante=record
nombre:string[max_long_nombre];
apellido:string[max_long_nombre];
dorsal:integer;
equipo:string[max_long_nombre];
end;
datos=array [1..max_participantes] of t_participante;
var
lista_completa:datos;
opc,cantidad,c:integer;
res:string[1];
busqueda:integer;
begin
{inicializo las variables}
repeat
{imprimo el titulo del menu}
writeln;
writeln('------------------------');
writeln('Gestion de Participantes');
writeln('------------------------');
writeln;
writeln;
{imprimo el menu}
Writeln(' 1.-Agregar participante');
Writeln(' 2.-Lista de participantes');
Writeln(' 3.-Busqueda de participante');
Writeln(' 4.-Guardar Participantes en archivo');
Writeln(' 5.-Cargar Participantes desde archivo');
Writeln(' 6.-Borrar participante');
Writeln(' 7.-Salir');
{pido la opcion del menu}
writeln;
Write(' -> Introduce la opcion que desees: ');Readln(opc);
case opc of
1: //Agregar Participantes
begin
for cantidad:=(cantidad +1) to max_participantes do
begin
writeln;
writeln('----------------------');
writeln('Agregar Participantes');
writeln('----------------------');
writeln;
writeln;
write(' -Nombre ',cantidad,': ');
readln(lista_completa[cantidad].nombre);
write(' -Apellido: ');
readln(lista_completa[cantidad].apellido);
write(' -Dorsal: ');
readln(lista_completa[cantidad].dorsal);
write(' -Equipo: ');
readln(lista_completa[cantidad].equipo);
writeln;
Write('Desea introducir otro participante? s/n: ');
Readln(res);
{si no, saco del ciclo}
if (res='n') OR (res='N') then break;
end;
end;
2: //Listar Participantes
begin
writeln;
writeln('------------------------');
writeln('Lista de Participantes');
writeln('------------------------');
writeln;
writeln;
for c:=1 to cantidad do
begin
writeln('--------------------------------------');
writeln('Nombre',c,': ',lista_completa[c].nombre);
writeln('Apellido: ',lista_completa[c].apellido);
writeln('Dorsal: ',lista_completa[c].dorsal);
writeln('Equipo: ',lista_completa[c].equipo);
writeln('-------------------------------------');
writeln;
end;{ciclo de impresion}
end;{fin de opcion 2 reporte de productos}
3: //Buscar participantes por dorsal
begin
Writeln('Buscar participantes por dorsal y mostrar el resto de datos')
end;
4: //Guardar participantes en un archivo
begin
Writeln('Guardar participantes en archivo')
end;
5: //Cargar Participantes desde archivo
begin
Writeln('Cargar participantes desde archivo');
end;
6: //Borrar participante
begin
Writeln('Borrar participante');
end;
end;{case}
until opc=7;
end.
-----------------------------------------------------------------------------------------------------------------------------
El programa tiene que realizar las siguientes acciones:
1.-Agregar participante
2.-Lista de participantes
3.-Búsqueda de participante por dorsal
4.-Guardar Participantes en archivo
5.-Cargar Participantes desde archivo
6.-Borrar participante
He conseguido implementar bien las dos primeras opciones. El problema me ha venido con el resto.
En el punto 3 hay que hacer una búsqueda por dorsal y que se muestren los datos del participante, tengo la impresión de que no debe ser muy difícil pero ni idea oye...
El 4 y el 5 lo mismo, no sé como guardar toda la información del record en un archivo y, por lo tanto no sé como cargar un archivo externo que sobreescriba el record del programa.
Y para terminar, no sé como borrar un participante en concreto del récord, primero porque necesito saber como buscar uno (apartado 3) y luego no sé cómo borrarlo.
En fin, no pido que me digáis todos los puntos que me faltan, con uno me conformo xDDD
Gracia de antemano.
Valora esta pregunta


0