Advertisement
idsystems

SLE_Practica62_Profesores

Jun 24th, 2024
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.34 KB | None | 0 0
  1.  
  2. /* Practica 62
  3.     Los nombres de los profesores de una escuela son almacenados alfabéticamente
  4.    en una estructura de árbol. Mostrar los nombres alfabéticamente.
  5. */
  6.  
  7. tipos
  8.    Profesor: registro {
  9.     nombre: cadena
  10.     izquierdo: numerico
  11.     derecho: numerico
  12.    }
  13.  
  14. var
  15.     arbol: vector [100] Profesor
  16.     raiz, libre, temp, actual, padre, i: numerico
  17.     opcion: numerico
  18.     nombre: cadena
  19.     encontrado: logico
  20.  
  21. inicio
  22.    cls()
  23.     raiz = 0
  24.     libre = 1
  25.  
  26.     // Inicializar la lista para el manejo de nodos libres
  27.     desde i=1 hasta 99 {
  28.         arbol[i].izquierdo = i + 1
  29.     }
  30.     arbol[100].izquierdo = 0
  31.  
  32.     repetir
  33.         imprimir("\nMenú:")
  34.         imprimir("\n1. Insertar Profesor")
  35.         imprimir("\n2. Mostrar Profesores en orden alfabético")
  36.         imprimir("\n3. Salir")
  37.         imprimir("\nElija una opción: ")
  38.         leer(opcion)
  39.  
  40.         eval {
  41.             caso (opcion ==1)
  42.                 // Insertar Profesor
  43.                 si (libre == 0) {
  44.                     imprimir("\nEl árbol está lleno.")
  45.                 sino
  46.                     temp = libre
  47.                     libre = arbol[libre].izquierdo
  48.  
  49.                     imprimir("\nIntroduce el nombre del profesor: ")
  50.                     leer(nombre)
  51.  
  52.                     arbol[temp].nombre = nombre
  53.                     arbol[temp].izquierdo = 0
  54.                     arbol[temp].derecho = 0
  55.  
  56.                     si (raiz == 0) {
  57.                         raiz = temp
  58.                           sino
  59.                         actual = raiz
  60.                         encontrado = FALSE  // Variable booleana para controlar el bucle
  61.                         repetir
  62.                             padre = actual
  63.                             si (nombre < arbol[actual].nombre) {
  64.                                 actual = arbol[actual].izquierdo
  65.                                 si (actual == 0) {
  66.                                     arbol[padre].izquierdo = temp
  67.                                     encontrado = TRUE  // Se ha encontrado el lugar de inserción
  68.                                 }
  69.                                      sino
  70.                                 actual = arbol[actual].derecho
  71.                                 si (actual == 0) {
  72.                                     arbol[padre].derecho = temp
  73.                                     encontrado = TRUE  // Se ha encontrado el lugar de inserción
  74.                                 }
  75.                             }
  76.                         hasta (encontrado)  // El bucle se repetirá hasta que se encuentre un lugar de inserción
  77.                     }
  78.                 }
  79.                 //romper
  80.  
  81.             caso (opcion ==2)
  82.                 // Mostrar Profesores en orden alfabético
  83.                 imprimir("\nProfesores en orden alfabético:")
  84.  
  85.                 mostrar_en_orden(raiz)
  86.                 //romper
  87.  
  88.             caso (opcion ==3)
  89.                 imprimir("\nSaliendo del programa.")
  90.                 //romper
  91.  
  92.             sino
  93.                 imprimir("\nOpción no válida. Por favor, elija una opción válida.")
  94.                 //romper
  95.         }
  96.     hasta (opcion == 3)
  97. fin
  98.  
  99.  
  100. subrutina mostrar_en_orden(nodo: numerico)
  101. inicio
  102.         si (nodo <> 0) {
  103.           mostrar_en_orden(arbol[nodo].izquierdo)
  104.           imprimir("\n ",arbol[nodo].nombre)
  105.           mostrar_en_orden(arbol[nodo].derecho)
  106.       }
  107. fin
  108.  
Tags: Arboles
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement