Advertisement
idsystems

SLE_Practica38_ProductosTienda

Jun 23rd, 2024
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1.    
  2. /* Mediante una LDE se almacenan ordenadamente los datos de los productos que se vende en una tienda comercial
  3.     (clave, descripción y precio). A través de un menú:
  4.  
  5. 1.  Insertar
  6. 2.  Eliminar
  7. 3.  Buscar
  8. 4.  Desplegar
  9. 5.  Salir
  10.  
  11. Se administran estos productos
  12.  
  13. */
  14.  
  15.  
  16. tipos
  17.    Producto: registro {
  18.     clave: numerico
  19.     descripcion: cadena
  20.     precio: numerico
  21.     anterior: numerico
  22.     siguiente: numerico
  23. }
  24.  
  25. var
  26.     lista: vector [100] Producto
  27.     cabeza, ultimo, libre, pos, temp: numerico
  28.     opcion, i, clave, precio: numerico
  29.     descripcion: cadena
  30.  
  31. inicio
  32.    cls()
  33.     cabeza = 0
  34.     ultimo = 0
  35.     libre = 1
  36.  
  37.     // Inicializar la lista
  38.     desde i=1 hasta 99 {
  39.         lista[i].siguiente = i + 1
  40.         lista[i].anterior = i - 1
  41.     }
  42.     lista[100].siguiente = 0
  43.  
  44.     repetir
  45.         imprimir("\nMenú:")
  46.         imprimir("\n1. Insertar")
  47.         imprimir("\n2. Eliminar")
  48.         imprimir("\n3. Buscar")
  49.         imprimir("\n4. Desplegar")
  50.         imprimir("\n5. Salir")
  51.         imprimir("\n\nElija una opción: ")
  52.         leer(opcion)
  53.  
  54.         eval
  55.          {
  56.             caso (opcion ==1)
  57.                 // Insertar
  58.                        Insertar()
  59.             caso (opcion ==2)
  60.                 // Eliminar
  61.                   Eliminar()
  62.             caso (opcion ==3)
  63.                 // Buscar
  64.                         Buscar()
  65.             caso (opcion ==4)
  66.                 // Desplegar
  67.                         Desplegar()
  68.             caso (opcion ==5)
  69.                 // Salir
  70.                 imprimir("\nSaliendo del programa.")
  71.         }
  72.     hasta (opcion == 5)
  73. fin
  74.  
  75. subrutina Insertar()
  76. inicio
  77.     si (libre == 0) {
  78.       imprimir("\nLa lista está llena.")
  79.    sino
  80.       temp = libre
  81.       libre = lista[libre].siguiente
  82.  
  83.       imprimir("\nIntroduce la clave del producto: ")
  84.       leer(clave)
  85.       imprimir("\nIntroduce la descripción del producto: ")
  86.       leer(descripcion)
  87.       imprimir("\nIntroduce el precio del producto: ")
  88.       leer(precio)
  89.  
  90.       lista[temp].clave = clave
  91.       lista[temp].descripcion = descripcion
  92.       lista[temp].precio = precio
  93.  
  94.       si (cabeza == 0 or lista[cabeza].clave >= clave) {
  95.          lista[temp].siguiente = cabeza
  96.          lista[temp].anterior = 0
  97.          si (cabeza <> 0) {
  98.             lista[cabeza].anterior = temp
  99.          }
  100.          cabeza = temp
  101.          si (ultimo == 0) {
  102.              ultimo = temp
  103.          }
  104.       sino
  105.          pos = cabeza
  106.          mientras (lista[pos].siguiente <> 0 and lista[lista[pos].siguiente].clave < clave) {
  107.             pos = lista[pos].siguiente
  108.          }
  109.          lista[temp].siguiente = lista[pos].siguiente
  110.          lista[temp].anterior = pos
  111.          si (lista[pos].siguiente <> 0) {
  112.              lista[lista[pos].siguiente].anterior = temp
  113.          }
  114.          lista[pos].siguiente = temp
  115.          si (pos == ultimo) {
  116.             ultimo = temp
  117.          }
  118.       }
  119.    }
  120. fin
  121.  
  122. subrutina Eliminar()
  123. inicio
  124.    imprimir("Introduce la clave del producto a eliminar: ")
  125.    leer(clave)
  126.    pos = cabeza
  127.    mientras (pos <> 0 and lista[pos].clave <> clave) {
  128.       pos = lista[pos].siguiente
  129.    }
  130.    si (pos == 0) {
  131.       imprimir("\nProducto no encontrado.")
  132.    sino
  133.       si (lista[pos].anterior <> 0) {
  134.          lista[lista[pos].anterior].siguiente = lista[pos].siguiente
  135.       sino
  136.          cabeza = lista[pos].siguiente
  137.       }
  138.       si (lista[pos].siguiente <> 0) {
  139.          lista[lista[pos].siguiente].anterior = lista[pos].anterior
  140.       sino
  141.          ultimo = lista[pos].anterior
  142.       }
  143.       lista[pos].siguiente = libre
  144.       libre = pos
  145.       imprimir("\nProducto eliminado.")
  146.    }
  147. fin
  148.  
  149. subrutina Buscar()
  150. inicio
  151.     imprimir("\nIntroduce la clave del producto a buscar: ")
  152.    leer(clave)
  153.    pos = cabeza
  154.    mientras (pos <> 0 and lista[pos].clave <> clave) {
  155.       pos = lista[pos].siguiente
  156.    }
  157.    si (pos == 0) {
  158.       imprimir("\nProducto no encontrado.")
  159.    sino
  160.       imprimir("\nProducto encontrado:")
  161.       imprimir("\nClave: ", lista[pos].clave)
  162.       imprimir("\nDescripción: ", lista[pos].descripcion)
  163.       imprimir("\nPrecio: ", lista[pos].precio)
  164.    }
  165. fin
  166.  
  167. subrutina Desplegar()
  168. inicio
  169.     pos = cabeza
  170.    mientras (pos <> 0) {
  171.       imprimir("\nClave: ", lista[pos].clave)
  172.       imprimir("\nDescripción: ", lista[pos].descripcion)
  173.       imprimir("\nPrecio: ", lista[pos].precio)
  174.       pos = lista[pos].siguiente
  175.    }
  176. Fin
  177.  
  178.  
  179.  
Tags: listas
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement