Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Mediante una LDE se almacenan ordenadamente los datos de los productos que se vende en una tienda comercial
- (clave, descripción y precio). A través de un menú:
- 1. Insertar
- 2. Eliminar
- 3. Buscar
- 4. Desplegar
- 5. Salir
- Se administran estos productos
- */
- tipos
- Producto: registro {
- clave: numerico
- descripcion: cadena
- precio: numerico
- anterior: numerico
- siguiente: numerico
- }
- var
- lista: vector [100] Producto
- cabeza, ultimo, libre, pos, temp: numerico
- opcion, i, clave, precio: numerico
- descripcion: cadena
- inicio
- cls()
- cabeza = 0
- ultimo = 0
- libre = 1
- // Inicializar la lista
- desde i=1 hasta 99 {
- lista[i].siguiente = i + 1
- lista[i].anterior = i - 1
- }
- lista[100].siguiente = 0
- repetir
- imprimir("\nMenú:")
- imprimir("\n1. Insertar")
- imprimir("\n2. Eliminar")
- imprimir("\n3. Buscar")
- imprimir("\n4. Desplegar")
- imprimir("\n5. Salir")
- imprimir("\n\nElija una opción: ")
- leer(opcion)
- eval
- {
- caso (opcion ==1)
- // Insertar
- Insertar()
- caso (opcion ==2)
- // Eliminar
- Eliminar()
- caso (opcion ==3)
- // Buscar
- Buscar()
- caso (opcion ==4)
- // Desplegar
- Desplegar()
- caso (opcion ==5)
- // Salir
- imprimir("\nSaliendo del programa.")
- }
- hasta (opcion == 5)
- fin
- subrutina Insertar()
- inicio
- si (libre == 0) {
- imprimir("\nLa lista está llena.")
- sino
- temp = libre
- libre = lista[libre].siguiente
- imprimir("\nIntroduce la clave del producto: ")
- leer(clave)
- imprimir("\nIntroduce la descripción del producto: ")
- leer(descripcion)
- imprimir("\nIntroduce el precio del producto: ")
- leer(precio)
- lista[temp].clave = clave
- lista[temp].descripcion = descripcion
- lista[temp].precio = precio
- si (cabeza == 0 or lista[cabeza].clave >= clave) {
- lista[temp].siguiente = cabeza
- lista[temp].anterior = 0
- si (cabeza <> 0) {
- lista[cabeza].anterior = temp
- }
- cabeza = temp
- si (ultimo == 0) {
- ultimo = temp
- }
- sino
- pos = cabeza
- mientras (lista[pos].siguiente <> 0 and lista[lista[pos].siguiente].clave < clave) {
- pos = lista[pos].siguiente
- }
- lista[temp].siguiente = lista[pos].siguiente
- lista[temp].anterior = pos
- si (lista[pos].siguiente <> 0) {
- lista[lista[pos].siguiente].anterior = temp
- }
- lista[pos].siguiente = temp
- si (pos == ultimo) {
- ultimo = temp
- }
- }
- }
- fin
- subrutina Eliminar()
- inicio
- imprimir("Introduce la clave del producto a eliminar: ")
- leer(clave)
- pos = cabeza
- mientras (pos <> 0 and lista[pos].clave <> clave) {
- pos = lista[pos].siguiente
- }
- si (pos == 0) {
- imprimir("\nProducto no encontrado.")
- sino
- si (lista[pos].anterior <> 0) {
- lista[lista[pos].anterior].siguiente = lista[pos].siguiente
- sino
- cabeza = lista[pos].siguiente
- }
- si (lista[pos].siguiente <> 0) {
- lista[lista[pos].siguiente].anterior = lista[pos].anterior
- sino
- ultimo = lista[pos].anterior
- }
- lista[pos].siguiente = libre
- libre = pos
- imprimir("\nProducto eliminado.")
- }
- fin
- subrutina Buscar()
- inicio
- imprimir("\nIntroduce la clave del producto a buscar: ")
- leer(clave)
- pos = cabeza
- mientras (pos <> 0 and lista[pos].clave <> clave) {
- pos = lista[pos].siguiente
- }
- si (pos == 0) {
- imprimir("\nProducto no encontrado.")
- sino
- imprimir("\nProducto encontrado:")
- imprimir("\nClave: ", lista[pos].clave)
- imprimir("\nDescripción: ", lista[pos].descripcion)
- imprimir("\nPrecio: ", lista[pos].precio)
- }
- fin
- subrutina Desplegar()
- inicio
- pos = cabeza
- mientras (pos <> 0) {
- imprimir("\nClave: ", lista[pos].clave)
- imprimir("\nDescripción: ", lista[pos].descripcion)
- imprimir("\nPrecio: ", lista[pos].precio)
- pos = lista[pos].siguiente
- }
- Fin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement