Advertisement
idsystems

SLE_Practica66_Salarios

Jun 24th, 2024
721
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.87 KB | None | 0 0
  1.  
  2. /* Practica 66. Salarios
  3.    El RFC, nombre y salario de cada uno de los empleados de una fabrica son almacenados
  4.    en un árbol binario de búsqueda con base en el salario, decir cual es el empleado que más gana.
  5. */
  6.  
  7. tipos
  8.    Empleado: registro {
  9.     RFC: cadena
  10.     nombre: cadena
  11.     salario: numerico
  12.     izquierdo: numerico
  13.     derecho: numerico
  14.    }
  15.  
  16. var
  17.     arbol: vector [*] Empleado
  18.     raiz, libre, temp, actual, padre, i, opcion: numerico
  19.     RFC, nombre: cadena
  20.     salario: numerico
  21.     cuantos: numerico
  22.     encontrado: logico
  23.  
  24. inicio
  25.    cls()
  26.     raiz = 0
  27.     libre = 1
  28.  
  29.    imprimir ("¿Cuantos empleados quieres registrar?")
  30.    leer (cuantos)
  31.  
  32.    dim (arbol, cuantos)
  33.  
  34.     // Inicializar la lista para el manejo de nodos libres
  35.     desde i=1 hasta cuantos-1 {
  36.         arbol[i].izquierdo = i + 1
  37.     }
  38.     arbol[cuantos].izquierdo = 0
  39.  
  40.     repetir
  41.         imprimir("\nMenú:")
  42.         imprimir("\n1. Insertar")
  43.         imprimir("\n2. Mostrar empleado que más gana")
  44.         imprimir("\n3. Salir")
  45.         imprimir("\nElija una opción: ")
  46.         leer(opcion)
  47.  
  48.         eval {
  49.             caso (opcion ==1)
  50.                 // Insertar
  51.                 si (libre == 0) {
  52.                     imprimir("\nEl árbol está lleno.")
  53.                 sino
  54.                     temp = libre
  55.                     libre = arbol[libre].izquierdo
  56.                     encontrado = FALSE
  57.  
  58.                     imprimir("\nIntroduce el RFC del empleado: ")
  59.                     leer(RFC)
  60.                     imprimir("\nIntroduce el nombre del empleado: ")
  61.                     leer(nombre)
  62.                     imprimir("\nIntroduce el salario del empleado: ")
  63.                     leer(salario)
  64.  
  65.                     arbol[temp].RFC = RFC
  66.                     arbol[temp].nombre = nombre
  67.                     arbol[temp].salario = salario
  68.                     arbol[temp].izquierdo = 0
  69.                     arbol[temp].derecho = 0
  70.  
  71.                     si (raiz == 0) {
  72.                         raiz = temp
  73.                     sino
  74.                         actual = raiz
  75.                         repetir
  76.                             padre = actual
  77.                             si (salario < arbol[actual].salario) {
  78.                                 actual = arbol[actual].izquierdo
  79.                                 si (actual == 0) {
  80.                                     arbol[padre].izquierdo = temp
  81.                                     encontrado = TRUE
  82.                                 }
  83.                             sino
  84.                                 actual = arbol[actual].derecho
  85.                                 si (actual == 0) {
  86.                                     arbol[padre].derecho = temp
  87.                                     encontrado = TRUE
  88.                                 }
  89.                             }
  90.                         hasta (encontrado)
  91.                     }
  92.                 }
  93.                 //romper
  94.  
  95.             caso (opcion ==2)
  96.                 // Mostrar empleado que más gana
  97.                 si (raiz == 0) {
  98.                     imprimir("\nEl árbol está vacío.")
  99.                 sino
  100.                     actual = raiz
  101.                     mientras (arbol[actual].derecho <> 0) {
  102.                         actual = arbol[actual].derecho
  103.                     }
  104.                     imprimir("\n\nEmpleado que más gana:")
  105.                     imprimir("\nRFC: ", arbol[actual].RFC)
  106.                     imprimir("\nNombre: ", arbol[actual].nombre)
  107.                     imprimir("\nSalario: ", arbol[actual].salario)
  108.                 }
  109.                 //romper
  110.  
  111.             caso (opcion ==3)
  112.                 imprimir("\nSaliendo del programa.")
  113.                 //romper
  114.  
  115.             sino
  116.                 imprimir("\nOpción no válida. Por favor, elija una opción válida.")
  117.                
  118.         }
  119.     hasta (opcion == 3)
  120. fin
  121.  
  122.  
  123.  
Tags: Arboles
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement