Pascal/Turbo Pascal - array de registros

   
Vista:

array de registros

Publicado por Laura (8 intervenciones) el 24/03/2010 13:34:16
Hola!estoy haciendo un programa que agrega,busca y elimina juegos en una estanteria. el registro juego lleva un campo booleano que sirve para ocupar el hueco de la estanteria cuando introducimos un juego. Mi problema es que no consigo hacer que no me deje agregar mas de 5 juegos que son los permitidos. Creo que el problema esta en el campo booleano. Adjunto el codigo para más claridad.

const max=5;

type
tjuego=record
plataforma:string;
titulo:string;
anio:integer;
referencia:string[5];
libre:boolean;
end;

testanteria=array[1..max] of tjuego;

procedure IntroducirJuego(var estanteria:testanteria);
var i:integer;
begin
for i:=1 to max do
begin
writeln('Introduzca la plataforma del juego');
readln(estanteria[i].plataforma);
writeln('Introduzca el titulo del juego');
readln(estanteria[i].titulo);
writeln('Introduzca el anio');
readln(estanteria[i].anio);
writeln('Introduzca la referencia');
readln(estanteria[i].referencia);
estanteria[i].libre:=false;
end;
writeln('No puede introducir mas juegos,la estanteria esta llena');

end;

Gracias de antemano.
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:array de registros

Publicado por Diego Romero (997 intervenciones) el 24/03/2010 14:51:42
Pero si el llenado del array estanteria está controlado por un for es seguro que al final tendrás todas las posiciones del array llenas. ¿Cuál es el problema?.
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

RE:array de registros

Publicado por Laura (8 intervenciones) el 24/03/2010 15:05:22
El problema es q solo puedo agregar 5 juegos y eso esta controlado por el campo libre.pero cuando lo ejecuto me deja agregar todos los que quiera. Quiero saber como hacer para que si los 5 juegos tienen libre a false no me deje agregar mas. Muchas gracias por contestar.
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

RE:array de registros

Publicado por Diego Romero (997 intervenciones) el 25/03/2010 01:19:47
Disculpa pero creo que no. Tal como está el código solo y únicamente puedes ingresar 5, no más, no menos. Y no hay posibilidad que el usuario "se saltee" ninguno.

Quizá lo que estás diciendo es que las posiciones se sobreescriben cada vez que llamas a este procedimiento. En ese caso deberías hacer algo como esto:

procedure IntroducirJuego(var estanteria:testanteria);
var i:integer;
begin
i:=1;
repeat
if estanteria.libre[i] = true then
begin
writeln('Introduzca la plataforma del juego');
readln(estanteria[i].plataforma);
writeln('Introduzca el titulo del juego');
readln(estanteria[i].titulo);
writeln('Introduzca el anio');
readln(estanteria[i].anio);
writeln('Introduzca la referencia');
readln(estanteria[i].referencia);
estanteria[i].libre:=false;
end; { if }
i:=i+1;
until i > max;
WriteLn('No hay más posiciones libres.');
end;
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

RE:array de registros

Publicado por Laura (8 intervenciones) el 25/03/2010 11:40:30
Gracias!!! Ese era mi problema. Ahora funciona bien.
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