Advertisement
idsystems

SLE_Practica37_Profesores

Jun 23rd, 2024
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.48 KB | None | 0 0
  1.  
  2. /*
  3. Una LDE (lista doblemente enlazada) es utilizada para almacenar los datos de los profesores como son RFC, nombre, materia y teléfono. A través de un menú:
  4.  
  5. 1.  Insertar
  6. 2.  Eliminar
  7. 3.  Desplegar
  8. 4.  Salir
  9.  
  10. Administrar los datos de los profesores de una Universidad.
  11. */
  12.  
  13.  
  14. tipos
  15.    Profesor: registro {
  16.     RFC: cadena
  17.     nombre: cadena
  18.     materia: cadena
  19.     telefono: cadena
  20.     anterior: numerico
  21.     siguiente: numerico
  22.    }
  23.  
  24. var
  25.     lista: vector [*] Profesor
  26.     cabeza, ultimo, libre, n: numerico
  27.     opcion, i, pos: numerico
  28.     RFC, nombre, materia, telefono: cadena
  29.  
  30. inicio
  31.     cabeza = 0
  32.     ultimo = 0
  33.     libre = 1
  34.  
  35.    dim (lista, 100)
  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. Desplegar")
  49.         imprimir("\n4. Salir")
  50.         imprimir("\nElija una opción: ")
  51.         leer(opcion)
  52.  
  53.         eval
  54.             {
  55.             caso (opcion ==1)
  56.                 // Insertar
  57.                 si (libre == 0) {
  58.                     imprimir("\nLa lista está llena.")
  59.                 sino
  60.                     pos = libre
  61.                     libre = lista[libre].siguiente
  62.  
  63.                     imprimir("\nIntroduce el RFC del profesor: ")
  64.                     leer(RFC)
  65.                     imprimir("\nIntroduce el nombre del profesor: ")
  66.                     leer(nombre)
  67.                     imprimir("\nIntroduce la materia del profesor: ")
  68.                     leer(materia)
  69.                     imprimir("\nIntroduce el teléfono del profesor: ")
  70.                     leer(telefono)
  71.  
  72.                     lista[pos].RFC = RFC
  73.                     lista[pos].nombre = nombre
  74.                     lista[pos].materia = materia
  75.                     lista[pos].telefono = telefono
  76.                     lista[pos].siguiente = 0
  77.                     lista[pos].anterior = ultimo
  78.  
  79.                     si (ultimo <> 0) {
  80.                         lista[ultimo].siguiente = pos
  81.                     }
  82.                     ultimo = pos
  83.  
  84.                     si (cabeza == 0) {
  85.                         cabeza = pos
  86.                     }
  87.                 }
  88.                 //terminar()
  89.  
  90.             caso (opcion ==2)
  91.                 // Eliminar
  92.                 si (cabeza == 0) {
  93.                     imprimir("\nLa lista está vacía.")
  94.                 sino
  95.                     imprimir("\nIntroduce el RFC del profesor a eliminar: ")
  96.                     leer(RFC)
  97.  
  98.                     pos = cabeza
  99.                     mientras (pos <> 0 and lista[pos].RFC <> RFC) {
  100.                         pos = lista[pos].siguiente
  101.                     }
  102.  
  103.                     si (pos == 0) {
  104.                         imprimir("\nProfesor no encontrado.")
  105.                     sino
  106.                         si (lista[pos].anterior <> 0) {
  107.                             lista[lista[pos].anterior].siguiente = lista[pos].siguiente
  108.                         sino
  109.                             cabeza = lista[pos].siguiente
  110.                         }
  111.  
  112.                         si (lista[pos].siguiente <> 0) {
  113.                             lista[lista[pos].siguiente].anterior = lista[pos].anterior
  114.                         sino
  115.                             ultimo = lista[pos].anterior
  116.                         }
  117.  
  118.                         lista[pos].siguiente = libre
  119.                         libre = pos
  120.                     }
  121.                 }
  122.                 //terminar()
  123.  
  124.             caso (opcion ==3)
  125.                 // Desplegar
  126.                 si (cabeza == 0) {
  127.                     imprimir("\nLa lista está vacía.")
  128.                 sino
  129.                     imprimir("\nDatos de los profesores:")
  130.                     pos = cabeza
  131.                     mientras (pos <> 0) {
  132.                         imprimir("\nRFC: ", lista[pos].RFC, ", Nombre: ", lista[pos].nombre, ", Materia: ", lista[pos].materia, ", Teléfono: ", lista[pos].telefono)
  133.                         pos = lista[pos].siguiente
  134.                     }
  135.                 }
  136.                 terminar()
  137.  
  138.             caso (opcion ==4)
  139.                 imprimir("\nSaliendo del programa.")
  140.                 //terminar()
  141.  
  142.             sino
  143.                 imprimir("\nOpción no válida. Por favor, elija una opción válida.")
  144.                 //terminar()
  145.         }
  146.     hasta (opcion == 4)
  147. fin
  148.  
Tags: listas
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement