Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - manu3742

#1
puedes eliminar mis peticiones y mi cuenta?
Gracias,  adios
#2
hola de nuevo y gracias por leer este mensaje y por la ayuda que me podais dar.

Tengo que hacer un procedimiento para dar de alta libros, sobre una tabla de 50 libros o más. Las altas se tienen que hacer de una en una. NO todas de golpe.

Con esto el algoritmo sería:

Todas las posiciones de la tabla en las que el campo ALTA sea TRUE, es que estan ocupadas.

Todas en las que ALTA sea FALSE estan libre.

buscar una posición libre.

ALGORITMO:

encontrado=false (cuando sea true es que he encontrado la posicion)
posicionlibre=1 (empiezo a buscar por la uno)
indice=1 (para ir recorriendo la tabla)
fin=false (he llegado al final de la tabla)
mientras encontrado sea false y fin sea false hacer (salgo del bucle si
encuentro una posición libre o llego al final de la tabla)
   si tabla[indice].alta es false
en caso de que la posicion indice esté libre (el campo alta es false)
      encontrado=true y posicionlibre=indice
   else
      if(indice es distinto de tamcoleccion) es decir si todavía no he
llegado al final
         indice=indice+1
      else
          fin=true (he llegado al final y lo indico con fin)
fin mientras
salgo del bucle si he llegado al final sin encontrar posicion libre, en
ese caso fin vale true o si he encontrado una posicion libre, en ese caso
encontrado vale true
entonces ya se lo que tengo que hacer en cada caso:
si fin=true
  mostrar mensaje "No hay sitio en la tabla para más libros"
si encontrado=true
  leer datos del libro y meterlos en la posición posicionlibre

hasta dónde yo comprendo he realizado el siguiente código:

Código (pascal) [Seleccionar]

Procedure alta_libro(biblioteca: Tbiblioteca; longitud: integer);

var

i : integer;
encontrado: boolean;
posicionlibre : real;
indice: real;
fin : boolean;

begin

While(encontrado = false ) AND (fin = false) do

   Begin

     while (encontrado = false) and (fin = false) do

        begin
         
           if bilbioteca[i].alta = false then
           encontrado = true;
           posicionlibre = indice;

           else

           if indice <> TAMBIBLIOTECA THEN
           indice = indice +1;

           else

             fin = true;
           end;

     end;

     begin
       
       if fin = true then
       writel('No hay sitio en la tabla para los libros');
       if encontrado = true then

leer datos del libro y meterlos en la posición libre.



Necesito saber si el código esta bien interpretado y cual me falta es lo último que me queda y la primera vez que hago un procedimiento igual.

un saludo y muchísimas gracias en lo que me podais ayudar.
#3
Gracias por contestar , pero no compila.

Dado esto, creo que tengo que hacer una busqueda en la tabla para que me diga que posición de las 50 entradas esta libre e introducir los datos del libro.

El problema es como hago una busqueda de una posicion libre en la tabla.
#4
lee y veras que doy las gracias por anticipado
#5
Vereis tengo una constante cuyo número de libro en la biblioteca es de 50.

Al utilizar este procedimineto que os pongo me salen para introducir datos de libros los 50.

qué código tengo que agregar para que únicamente me salga un libro a introducir y no los 50?

saludos y gracias por anticipado.


Código (pascal) [Seleccionar]
PROCEDURE lee_biblioteca(var biblioteca: Tbiblioteca; longitud: integer);

var

i: integer;

begin

for i:= 1 to longitud do

begin

writeln('Introduzca los datos del libro: ' , i);
lee_libro(biblioteca[i]);

end;

end;
#6
Si que lo agradezco lo que pasa es que estoy haciendo un curso sobre Pascal desde el inicio puro y duro y no de Delhpi. siempre se me contesta con este último. Con lo que la ayuda es nula. de todas formas te pongo el código para que veas mejor pues tendrás muchos mas conocimientos que yo como hacerlo


Código (pascal) [Seleccionar]


PROGRAM Bibliotecas;

(* Tamaño de cada registro que se pide *)

CONST

   TAMMAXI            = 40;
   TAMBIBLIOTECA     = 5;
   
TYPE

(* registro anidado que define las características de cada libro *)

   
   Tprestado = record
      
      nom_apellidos : string [TAMMAXI];
      email         : string [TAMMAXI];
      fecha        : char;
      end;
   
   
   Tlibro = record
         datos  : Tprestado;
         codigo : integer;
         titulo : string [TAMMAXI];
         autor  : string [TAMMAXI];
         tema   : string [TAMMAXI];
         precio : integer;
         alta   : boolean;
      prestado   : boolean;
         
      
         end;

   
   
(* -- TABLA SOBRE LA QUE VAMOS A TRABAJAR EN EL PROYECTO BIBLIOTECA --*)

   Tbiblioteca = array[1..TAMBIBLIOTECA] of Tlibro;
      Tfichero = file of Tlibro;
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!! FUNCIONES Y PROCEDIMIENTOS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

(* -- LEE DEL TECLADO TODA LA INFORMACIÓN DE UN LIBRO QUE SE LE PASA--*)

PROCEDURE lee_libro( var libro: Tlibro);

begin

   
   writeln;
   writeln('Codigo: ');
   readln(libro.codigo);
   writeln('Titulo: ');
   readln(libro.titulo);
   writeln('Autor: ');
   readln(libro.autor);
   writeln('Tema: ');
   readln(libro.tema);
   writeln('Precio: ');
   readln(libro.precio);
   writeln;
   
end;

(* PRESENTAR LISTADOS DE LA BIBLIOTECA *)


PROCEDURE imprime_libro(libro: Tlibro); 

begin
                                         
      writeln('--------------------------------------');
      writeln('LISTADO POR LIBRO');
      writeln('--------------------------------------');
      
      writeln('Codigo : ', libro.codigo);
      writeln('Titulo : ', libro.titulo);
      writeln('Autor : ' , libro.autor);
      writeln('Tema : ', libro.tema);
      writeln('Precio : ',libro.precio);
        writeln;
      writeln('--------------------------------------');
   
end;

PROCEDURE hacer_prestamo(var prestado: Tprestado);

begin

   writeln;
   writeln('------------------------------------');
   writeln('INTRODUCIR DATOS PRESTAMO BIBLIOTECA');
   writeln('------------------------------------');
   writeln('Introducir Nombre y Apellidos: ');
   readln(prestado.nom_apellidos);
   writeln('Email: ');
   readln(prestado.email);
   writeln('Fecha del Prestamo: ');
   readln(prestado.fecha);
   writeln;
   
end;

PROCEDURE imprime_prestados(prestado:Tprestado; longitud: integer);

var

   i:  integer;
   
begin

for i:= 1 to longitud do;

   begin
   
      writeln('----------------------------------------');
      writeln('-----LISTADO DE LIBROS PRESTADOS--------');
      writeln('----------------------------------------');
      
      hacer_prestamo(prestado);
      
   end;
   
end;

(* -- CON ESTE PROCEDIMIENTO PRETENDO BUSCAR Y MODIFICAR SU ESTADO DE ALTA, BAJA O MODIFICAR --*)

PROCEDURE baja_modificacion( biblioteca: Tbiblioteca; longitud: integer; buscado: integer);

var

       i  : integer;
encontrado: Boolean;

begin

encontrado:= false;

for i:= 1 to longitud do

   begin
   
      if biblioteca.codigo = buscado then begin
      imprime_libro(biblioteca);
      encontrado:= true;
      end;
   
   end;
      
   begin
   
      if encontrado = false then begin
      lee_libro(biblioteca);
      end;
      
   end;


end;

(* -- PENDIENTE DE REALIZAR --*)

(* PROCEDURE baja_libro( var libro: Tlibro; longintud: integer);

begin


end; *)

(* -- PENDIENTE DE REALIZAR --*)

(*procedure modificar_datos(var prestado: Tprestado; longitud:integer);

begin



end;*)



(* lISTADOS DE TODOS LOS LIBROS *)

PROCEDURE imprime_libros(biblioteca: Tbiblioteca; longitud: integer);

var

i: integer;

begin

for i:= 1 to longitud do

   begin

      writeln('--------------------------------------');
      writeln('LISTADO DE TODOS LOS LIBROS BIBLIOTECA');
      writeln('--------------------------------------');
      
      imprime_libro(biblioteca);
   
   end;
   
end;



(* FUNCION QUE DEVUELVE EL VALOR TOTAL DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION suma_coleccion(biblioteca: Tbiblioteca; longitud: integer): integer;

var

i: integer;
suma: integer;

begin

suma:= 0;

for i:= 1 to longitud do

   begin
   
      suma:= suma + biblioteca.precio;
      
      suma:=suma_coleccion;
      
   end;
   
end;

(* FUNCIÓN QUE DEVUELVE VALOR MÁXIMO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Maximo(biblioteca: Tbiblioteca; longitud: integer): integer;

var

i: integer;
max: integer;

begin

max:= 0;

for i:= 1 to longitud do

   begin
   
      if max < biblioteca.precio then begin
         
         max:= biblioteca.precio;
      
         Maximo:= max;
      end;   
   
   end;
   
end;

(* FUNCION QUE DEVUELVE VALOR MÍNIMO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Minimo(biblioteca: Tbiblioteca; longitud: integer): real;

var

i: integer;
min: integer;

begin

min:= 0;

for i:= 1 to longitud do

   begin
   
      if min > biblioteca.precio then
      
      (*min:= biblioteca.precio;*)
      
      Minimo:= min;
   
   end;
   
end;

(* FUNCION QUE DEVUELVE EL VALOR MEDIO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Media(biblioteca: Tbiblioteca; longitud: integer): real;

var

i: integer;
suma_coleccion: integer;

begin

suma_coleccion:= 0;
   
for i:=  1 to longitud do
   
      begin
      
         suma_coleccion:= suma_coleccion + biblioteca.precio;
         Media:= suma_coleccion/1.0+longitud;
      
      end;
      
end;

(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    Funciones de ficheros   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

(*-- ALMACENA DATOS LEIDOS DE UN FICHERO --*)
 
PROCEDURE graba_fichero(nombre: string; var biblioteca: Tbiblioteca; longitud: integer);
Var
  i : integer;
  fichero : Tfichero;
Begin   
  assign(fichero, nombre);
   rewrite(fichero);

for i:= 1 to longitud do
      write(fichero, biblioteca);
      
   close(fichero);
End;

(*-- LEE DATOS DEL FICHERO --*)

PROCEDURE lee_fichero(nombre: string; var biblioteca: Tbiblioteca; longitud: integer);

Var
     i : integer;
fichero : Tfichero;

Begin   
  i := 0;
   
   assign(fichero, nombre);
   reset(fichero);
   
    while ( not(eof(fichero)) AND (i<TAMBIBLIOTECA) ) do begin
    i := i+1;      
    read(fichero, biblioteca);
   
   end;
      
   close(fichero);

   
End;

(*-- FUNCIÓN QUE PRESENTA MENÚ Y DEVUELVE OPCIÓN ELEGIDA --*)

FUNCTION Menu: INTEGER;

VAR

opc: integer;

BEGIN

   repeat
   
      writeln('-----------------------------');
      writeln('MENU DE GESTION DE BIBLIOTECA');
      writeln('-----------------------------');
      writeln;
      writeln('1. ALTA DE LIBRO');
      writeln('2. BAJA DE LIBRO');
      writeln('3. DATOS DE PRESTAMO');
      writeln('4. MODIFICACION DE DATOS');
      writeln('5. GUARDAR DATOS EN FICHEROS');
      writeln('6. LECTURA DE DATOS DE FICHERO');
      writeln('7. PRESENTACION DE LISTADO DE BIBLIOTECA');
            
      writeln;
      writeln('8. SALIR');
      writeln('OPCION:  ');
      readln(opc);
       until ( (opc>=1) and (opc <=7) or (opc=8)    );

Menu := opc;
End;   

(*--  FUNCIÓN QUE PRESENTA UN SUBMENU DE LA OPCION 6 DEL MENÚ PRINCIPAL Y DEVUELVE LA OPCION ELEGIDA --*)

FUNCTION submenu: INTEGER;

VAR

opc1: integer;

BEGIN

   repeat
   
      writeln('------------------------------------------');
      writeln('MENU PRESENTACION DE LISTADO DE BIBLIOTECA');
      writeln('------------------------------------------');
      writeln;
      writeln('9. LISTADO DE TODOS LOS LIBROS DE LA BIBLIOTECA');
      writeln('10. LISTADO DE LIBROS PRESTADOS');
      writeln('11. LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL DE LA COLECCION');
      writeln;
      writeln('12. VOLVER MENU PRINCIPAL');
      writeln('OPCION: ');
      readln(opc1);
      until ( (opc1>=9) and (opc1<=12) );

submenu:= opc1;

END;

(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    VARIABLES GLOBALES           !!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)      
VAR

libro     : Tlibro;
prestado  : Tprestado;f
biblioteca: Tbiblioteca;
opc        : integer;
opc1      : integer;
nombre    : string;      
buscado   : integer;
   
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    PROGRAMA PRINCIPAL          !!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

BEGIN

   repeat
   
      opc:= Menu;
      
      case opc of
      
         1: lee_libro(libro);
         2: begin
            writeln('Introducir codigo: ');
            readln(buscado);   
            baja_modificacion(biblioteca, TAMBIBLIOTECA, buscado);
            end;   
         3: hacer_prestamo(prestado);
         4: baja_modificacion(biblioteca, TAMBIBLIOTECA, buscado);
         5: begin
            writeln('Introduzca el nombre del fichero de datos: ');
            readln(nombre);
            graba_fichero(nombre, biblioteca, TAMBIBLIOTECA); 
            end;
         6: begin
            writeln('Introduzca el nombre del fichero: ');
            readln(nombre);
            lee_fichero(nombre, biblioteca, TAMBIBLIOTECA);
            end;
         7: begin
            opc1:=submenu;
            end;
      end;
   until(opc=8);
   
   repeat
      opc1:= Submenu;
      
      case opc1 of
      
         9: imprime_libros(biblioteca, TAMBIBLIOTECA);
         10: imprime_prestados(prestado, TAMBIBLIOTECA);
         11: begin
            writeln('--------------------------------------------------------------');
            writeln('LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL');
            writeln('--------------------------------------------------------------');
            writeln('Valor máximo: ');
            maximo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor mínimo: ');
            minimo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor medio: ');
            media(biblioteca, TAMBIBLIOTECA);
            writeln('Valor total Biblioteca');
            suma_coleccion(biblioteca, TAMBIBLIOTECA);
            end;
         12: begin
            opc:= menu;
            end;(* ME DA ERROR *)
       end;
   until(opc1=12);
END.
#7
Hola de nuevo,
Estoy acabando el programa final de curso. Tengo por último que hacer un procedimiento para dar de baja y modificar un registro.  Me dais pistas de como hacerlo?

saludos
#8
Código (pascal) [Seleccionar]


Hola de nuevo amigo, al compilar el programa me da dos errores en el menú. Os cuento... tengo un menu para un programa y un submenu que quiero enlazar si es que se puede. He puesto donde me da error cual sería la solución?

gracias y saludos

BEGIN

   repeat
   
      opc:= Menu;
      
      case opc of
      
         1: lee_libro(libro);
         2: busca_datos(biblioteca, TAMBIBLIOTECA, buscado);
         3: lee_prestamos(prestado);
         4: busca_datos(biblioteca, TAMBIBLIOTECA, buscado);
         5: begin
            writeln('Introduzca el nombre del fichero de datos: ');
            readln(nombre);
            graba_fichero(nombre, biblioteca, TAMBIBLIOTECA); 
            end;
         6: begin
            writeln('Introduzca el nombre del fichero: ');
            readln(nombre);
            lee_fichero(nombre, biblioteca, TAMBIBLIOTECA);
            end;
         7: opc1;    (* ME DA ERROR *)
      end;
   until(opc=8);
   
   repeat
      opc1:= Submenu;
      
      case opc1 of
      
         9: imprime_libros(biblioteca, TAMBIBLIOTECA);
         10: imprime_prestados(prestado, TAMBIBLIOTECA);
         11: begin
            writeln('--------------------------------------------------------------');
            writeln('LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL');
            writeln('--------------------------------------------------------------');
            writeln('Valor máximo: ');
            maximo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor mínimo: ');
            minimo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor medio: ');
            media(biblioteca, TAMBIBLIOTECA);
            writeln('Valor total Biblioteca');
            suma_coleccion(biblioteca, TAMBIBLIOTECA);
            end;
         12: opc;   (* ME DA ERROR *)
       end;
   until(opc1=12);
END.
#9
Código (pascal) [Seleccionar]


Necesito me ayudeis a ver que código esta mal preincipalmente el menu. no estoy muy  seguro si es correcto lo que he codificado

PROGRAM Bibliotecas;

(* Tamaño de cada registro que se pide *)

CONST

   TAMMAXI            = 40;
   TAMBIBLIOTECA     = 25;
   
TYPE

(* registro anidado que define las características de cada libro *)

   
   Tprestado = record
      
      nom_apellidos : string [TAMMAXI];
      email         : string [TAMMAXI];
      fecha        : char;
      end;
   
   
   Tlibro = record
         datos  : Tprestado;
         titulo : string [TAMMAXI];
         autor  : string [TAMMAXI];
         tema   : string [TAMMAXI];
         precio : integer;
         alta   : boolean;
      
         end;

   
   
(* -- TABLA SOBRE LA QUE VAMOS A TRABAJAR EN EL PROYECTO BIBLIOTECA --*)

   Tbiblioteca = array[1..TAMBIBLIOTECA] of Tlibro;
      Tfichero = file of Tlibro;

(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    VARIABLES GLOBALES           !!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

VAR

libro     : Tlibro;
prestado  : Tprestado;
biblioteca: Tbiblioteca;
libro_prestado : Boolean;
alta      : Boolean;
fichero   : char;
opc        : integer;
opc1      : integer;
nombre    : string;



(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!! FUNCIONES Y PROCEDIMIENTOS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

(* -- LEE DEL TECLADO TODA LA INFORMACIÓN DE UN LIBRO QUE SE LE PASA--*)

PROCEDURE lee_libro( var libro: Tlibro);

begin

   writeln;
   writeln('Alta o baja (true, false): ');
   readln(libro.alta);
   writeln('Titulo: ');
   readln(libro.titulo);
   writeln('Autor: ');
   readln(libro.autor);
   writeln('Tema: ');
   readln(libro.tema);
   writeln('Precio: ');
   readln(libro.precio);
   writeln;
   
end;

(* PRESENTAR LISTADOS DE LA BIBLIOTECA *)


PROCEDURE imprime_libro(libro: Tlibro); 

begin
                                         
      writeln('--------------------------------------');
      writeln('LISTADO POR LIBRO');
      writeln('--------------------------------------');
      
      writeln('Alta o baja (true o false)',libro.alta);
      writeln('Titulo : ', libro.titulo);
      writeln('Autor : ' , libro.autor);
      writeln('Tema : ', libro.tema);
      writeln('Precio : ',libro.precio);
        writeln;
      writeln('--------------------------------------');
   
end;

PROCEDURE lee_prestamos(var prestado: Tprestado);

begin

   writeln;
   writeln('------------------------------------');
   writeln('INTRODUCIR DATOS PRESTAMO BIBLIOTECA');
   writeln('------------------------------------');
   writeln('Introducir Nombre y Apellidos: ');
   readln(prestado.nom_apellidos);
   writeln('Email: ');
   readln(prestado.email);
   writeln('Fecha del Prestamo: ');
   readln(prestado.fecha);
   writeln;
   
end;

PROCEDURE imprime_prestados(prestado:Tprestado; longitud: integer);

var

   i:  integer;
   
begin

for i:= 1 to longitud do;

   begin
   
      writeln('----------------------------------------');
      writeln('-----LISTADO DE LIBROS PRESTADOS--------');
      writeln('----------------------------------------');
      
lee_prestamos(prestado);
      
   end;
   
end;

(* -- CON ESTE PROCEDIMIENTO PRETENDO BUSCAR Y MODIFICAR SU ESTADO DE ALTA, BAJA O MODIFICAR --*)

PROCEDURE busca_datos( biblioteca: Tbiblioteca; longitud: integer; buscado: char);

var

       i  : integer;
encontrado: Boolean;

begin

encontrado:= false;

for i:= 1 to longitud do

   begin
   
      if biblioteca .titulo = buscado then begin
      imprime_libro(biblioteca);
      encontrado:= true;
      end;
   
   end;
      
   begin
   
      if encontrado = false then begin
      lee_libro(biblioteca);
      end;
      
   end;


end;

(* -- PENDIENTE DE REALIZAR --*)

(* PROCEDURE baja_libro( var libro: Tlibro; longintud: integer);

begin


end; *)

(* -- PENDIENTE DE REALIZAR --*)

(*procedure modificar_datos(var prestado: Tprestado; longitud:integer);

begin



end;*)



(* lISTADOS DE TODOS LOS LIBROS *)

PROCEDURE imprime_libros(biblioteca: Tbiblioteca; longitud: integer);

var

i: integer;

begin

for i:= 1 to longitud do

   begin

      writeln('--------------------------------------');
      writeln('LISTADO DE TODOS LOS LIBROS BIBLIOTECA');
      writeln('--------------------------------------');
      
      imprime_libro(biblioteca);
   
   end;
   
end;



(* FUNCION QUE DEVUELVE EL VALOR TOTAL DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION suma_coleccion(biblioteca: Tbiblioteca; longitud: integer): real;

var

i: integer;
suma: integer;

begin

suma:= 0;

for i:= 1 to longitud do

   begin
   
      suma:= suma + biblioteca.precio;
      
   end;
   
end;

(* FUNCIÓN QUE DEVUELVE VALOR MÁXIMO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Maximo(bibliooteca: Tbiblioteca; longitud: integer): integer;

var

i: integer;
max: integer;

begin

max:= 0;

for i:= 1 to longitud do

   begin
   
      if max < biblioteca.precio then
         
         max:= biblioteca.precio;
      
         Maximo:= max;
   
   end;
   
end;

(* FUNCION QUE DEVUELVE VALOR MÍNIMO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Minimo(biblioteca: Tbiblioteca; longitud: integer): real;

var

i: integer;
min: integer;

begin

min:= 0;

for i:= 1 to longitud do

   begin
   
      if min > biblioteca.precio then
      
      min:= biblioteca.precio;
      
      Minimo:= min;
   
   end;
   
end;

(* FUNCION QUE DEVUELVE EL VALOR MEDIO DE LA COLECCION DE LA BIBLIOTECA *)

FUNCTION Media(biblioteca: Tbiblioteca; longitud: integer): real;

var

i: integer;
suma_coleccion: integer;

begin

suma_coleccion:= 0;
   
for i:=  1 to longitud do
   
      begin
      
         suma_coleccion:= suma_coleccion + biblioteca.precio;
         Media:= suma_coleccion/1.0+longitud;
      
      end;
      
end;

(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    Funciones de ficheros   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

(*-- ALMACENA DATOS LEIDOS DE UN FICHERO --*)
 
PROCEDURE graba_fichero(nombre: string; biblioteca: Tbiblioteca; longitud: integer);
Var
  i : integer;
  fichero : Tfichero;
Begin   
  assign(fichero, nombre);
   rewrite(fichero);

for i:= 1 to longitud do
      write(fichero, biblioteca);
      
   close(fichero);
End;

(*-- LEE DATOS DEL FICHERO --*)

PROCEDURE lee_fichero(nombre: string; var biblioteca: Tbiblioteca; longitud: integer);

Var
     i : integer;
fichero : Tfichero;

Begin   
  i := 0;
   
   assign(fichero, nombre);
   reset(fichero);
   
    while ( not(eof(fichero)) AND (i<TAMBIBLIOTECA) ) do begin
    i := i+1;      
    read(fichero, biblioteca);
   
   end;
      
   close(fichero);

   
End;

(*-- FUNCIÓN QUE PRESENTA MENÚ Y DEVUELVE OPCIÓN ELEGIDA --*)

FUNCTION Menu: INTEGER;

VAR

opc: integer;

BEGIN

   repeat
   
      writeln('-----------------------------');
      writeln('MENÚ DE GESTIÓN DE BIBLIOTECA');
      writeln('-----------------------------');
      writeln;
      writeln('1. ALTA DE LIBRO');
      writeln('2. BAJA DE LIBRO');
      writeln('3. DATOS DE PRÉSTAMO');
      writeln('4. MODIFICACIÓN DE DATOS');
      writeln('5. GUARDAR DATOS EN FICHEROS');
      writeln('6. LECTURA DE DATOS DE FICHERO');
      writeln('7. PRESENTACIÓN DE LISTADO DE BIBLIOTECA');
            
      writeln;
      writeln('8. SALIR');
      writeln('OPCION:  ');
      readln(opc);
       until ( (opc>=1) and (opc <=7) or (opc=8)    );

Menu := opc;
End;   

(*--  FUNCIÓN QUE PRESENTA UN SUBMENU DE LA OPCION 6 DEL MENÚ PRINCIPAL Y DEVUELVE LA OPCION ELEGIDA --*)

FUNCTION submenu: INTEGER;

VAR

opc1: integer;

BEGIN

   repeat
   
      writeln('------------------------------------------');
      writeln('MENÚ PRESENTACIÓN DE LISTADO DE BIBLIOTECA');
      writeln('------------------------------------------');
      writeln;
      writeln('9. LISTADO DE TODOS LOS LIBROS DE LA BIBLIOTECA');
      writeln('10. LISTADO DE LIBROS PRESTADOS');
      writeln('11. LISTADO DE PRECIOS MÁXIMOS, MÍNIMOS, LA MEDIA Y EL VALOR TOTAL DE LA COLECCIÓN');
      writeln;
      writeln('12. VOLVER MENU PRINCIPAL');
      writeln('OPCION: ');
      readln(opc1);
      until ( (opc1>=9) and (opc<=11) or (opc1=12) );

submenu:= opc1;

END;
      
      
   
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   
(*!!!!!!!!!!!!!!!!    PROGRAMA PRINCIPAL          !!!!!!!!!!!!!!!!!!!!!!!!!!!*)
(*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*)   

BEGIN

   repeat
   
      opc:= Menu;
      
      case opc of
      
         1: lee_libro(libro);
         2: busca_datos(biblioteca, TAMBIBLIOTECA, buscado);
         3: lee_prestamos(biblioteca);
         4: busca_datos(biblioteca, TAMBIBLIOTECA, buscado);
         5: begin
            writeln('Introduzca el nombre del fichero de datos: ');
            readln(nombre);
            graba_fichero(nombre, biblioteca, TAMBIBLIOTECA);
            end;
         6: begin
            writeln('Introduzca el nombre del fichero: ');
            readln(nombre);
            lee_fichero(nombre, biblioteca, TAMBIBLIOTECA);
            end;
         7: opc1;
      end;
   until(opc=8);
   
   repeat
      opc1:= Submenu;
      
      case opc1 of
      
         9: imprime_libros(biblioteca, TAMBIBLIOTECA);
         10: imprime_prestados(prestado, TAMBIBLIOTECA);
         11: begin
            writeln('--------------------------------------------------------------');
            writeln('LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL');
            writeln('--------------------------------------------------------------');
            writeln('Valor máximo: ');
            maximo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor mínimo: ');
            minimo(biblioteca, TAMBIBLIOTECA);
            writeln('Valor medio: ');
            media(biblioteca, TAMBIBLIOTECA);
            writeln('Valor total Biblioteca');
            suma_coleccion(biblioteca, TAMBIBLIOTECA);
            end;
         12: opc;
       end;
   until(opc1=12);
END.
#10
Una pregunta , si introduzco un precio por ejemplo en una tabla, (lenguaje Pascal) y quiero borrarlo o modificarlo, como lo hago?

saludos gracias