La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Pascal-Turbo-Pascal/960079-Ayuda-urgene-con-este-ejercicio-de-pascal.html

Ayuda urgene con este ejercicio de pascal

Ayuda urgene con este ejercicio de pascal

Publicado por patricia (1 intervención) el 07/04/2008 23:58:27
Hola:
Necesito ayuda urgente con este ejercicio.Gracias. Este es el enunciado pero me falta dar de alta, dar de baja, introducir datos, modificar datos y todo ellos almacenados en un fichero y listado de todos los libros y de los libros prestados. Gracias.

Ejercicio Final opción B: Gestión de una biblioteca
El programa deberá permitir gestionar su biblioteca particular. Si desea, y tras consultarlo con su tutor, podría modificar este programa para gestionar su colección de compactos (CD's), o de discos, o..
El programa deberá almacenar la información de cada libro:
· Título
· Autor
· Tema
· Precio
· Prestado:
o nombre de la persona a la que ha prestado un libro.
o dirección de correo electrónico
o fecha del préstamo
Las operaciones sobre su biblioteca serán:
· dar de alta
· dar de baja
· introducir datos de un préstamo
· modificar datos
· presentar listados de su biblioteca:
o listado de todos los libros
o listado de los libros prestados
o listado con precios máximos, mínimos, la media y el valor total de su colección.
Será necesario usar un fichero para almacenar los datos de su colección.

Program Biblioteca;

Const
TAMCOLECCION=2;

Type
Tlibro= record
Titulo: string[80];
Autor: string[80];
Tema: string [30];
Precio: real;
prestado: string;
nombre_persona: string[40];
direccion_correo: string;
fecha_prestamo: string;

end;

Tcoleccion= array[1..TAMCOLECCION]of Tlibro;

Tfichero=file of Tlibro;

Procedure lee_libro(Var Coleccion1:Tlibro);


Begin
write ('Titulo: ');
readln (Coleccion1.Titulo);
write ('Autor: ');
readln (Coleccion1.Autor);
write ('Tema: ');
readln (Coleccion1.Tema);
write ('Precio: ');
readln (Coleccion1.Precio);

write ('¿Esta prestado este libro?');
readln (Coleccion1.prestado);

if (Coleccion1.prestado='SI') then

begin
write ('Nombre de la persona a la que se ha prestado:');
readln (Coleccion1.nombre_persona);
write ('Direccion de correo electronico');
readln (Coleccion1.direccion_correo);
write ('Fecha del prestamo');
readln (Coleccion1.fecha_prestamo);

end;

end;

Procedure lee_coleccion (Var Coleccion1:Tcoleccion; TAMCOLECCION: integer);

Var
i: integer;

Begin
For i:=1 to TAMCOLECCION do
lee_libro (Coleccion1[i]);

end;

Procedure imprime_libro (Coleccion1:Tlibro);

Begin

writeln ('Titulo: ', Coleccion1.Titulo);
writeln ('Autor: ', Coleccion1.Autor);
writeln ('Tema: ', Coleccion1.Tema);
writeln ('Precio: ', Coleccion1.Precio:0:2);

if (Coleccion1.prestado='SI') then
begin
writeln ('libro prestado a: ', Coleccion1.nombre_persona);
writeln ('correo electronico:', Coleccion1.direccion_correo);
writeln ('Fecha prestamo:', Coleccion1.fecha_prestamo);
writeln ('');
End;
end;

(*Presenta los datos de los cuadros*)
Procedure imprime_coleccion (Coleccion1:Tcoleccion; TAMCOLECCION: integer);

Var

i:integer;


Begin

for i:=1 to TAMCOLECCION do(*Variable auxiliar para contadores*)
imprime_libro (Coleccion1[i]);



end;

Function suma_coleccion (Coleccion1:Tcoleccion;TAMCOLECCION:integer):real;

Var
i:integer;(*Variable auxiliar para contadores*)

Begin

suma_coleccion:=0;(*Se inicia a 0 porque acumula una suma*)

for i:=1 to TAMCOLECCION do (*Se inicia la tabla*)
begin

suma_coleccion:=suma_coleccion + Coleccion1[i].Precio;(*Almacena suma*)

end;

end;

(*Calcula el precio maximo y el minimo de los cuadrosy valor total coleccion*)
Procedure calcula_estadisticas (Coleccion1:Tcoleccion;
Var maximo, minimo:integer; TAMCOLECCION: integer);

Var
i: integer; (*Variable auxiliar para contadores*)

Begin

maximo:=1;
minimo:=1;
while (coleccion1[minimo].Precio=0) AND (minimo<=TAMCOLECCION)do
minimo:=minimo+1;
For i:=2 to TAMCOLECCION do (*Inicia la tabla*)
begin
if (Coleccion1[i].Precio >Coleccion1[maximo].Precio) then
maximo:=i;(*Si hay un valor mayor es el nuevo maximo*)

if (Coleccion1[i].Precio <Coleccion1[minimo].Precio)
and (Coleccion1[i].Precio>0) then
minimo:=i;(*Si hay un valor menor es el nuevo minimo*)
end;
End;

Var
Coleccion1:Tcoleccion;
max1,min1:integer;
suma: real;
nombreFichero:string;


Begin
writeln('');
writeln ('Coleccion Libros');

lee_coleccion (Coleccion1,TAMCOLECCION);

writeln ('----');

writeln ('Listado de todos los libros');
writeln('');
imprime_coleccion(Coleccion1, TAMCOLECCION);

writeln ('---');

suma:=suma_coleccion(Coleccion1, TAMCOLECCION);
writeln ('El valor total de la coleccion es: ' , suma:0:2);


calcula_estadisticas (Coleccion1,max1,min1,TAMCOLECCION);
writeln ('El precio maximo es: ',Coleccion1[max1].precio:0:0,'.');
writeln ('El precio minimo es:' , Coleccion1[min1].precio:0:0, '.');


End.

alguien por favor me quiere ayudar

Publicado por isaac (1 intervención) el 09/04/2008 23:39:26
soy estudiante de informatica soy nuevo,y me guetaria que alguien me ayude con este problemita.
hacer un programa en pascal que calcule la tabla del 5 del 1 al 12.
el otro es, 5 sueldos de 5 enpleados si son mayores de 10,000 sacarle el dos por ciento. y el otro un programa que inprima los dias de la semana.