Advertisement
idsystems

SLE_Practica61_Votaciones

Jun 24th, 2024
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.60 KB | None | 0 0
  1.  
  2. /* Practica61
  3.  
  4.     Las votaciones de diferentes partidos son almacenadas en un árbol binario de búsqueda,
  5.    decir cual fue el numero de votaciones mayor y cuál fue el menor.
  6. */
  7.  
  8. tipos
  9.    Votacion: registro {
  10.     partido: cadena
  11.     votos: numerico
  12.     izquierdo: numerico
  13.     derecho: numerico
  14.    }
  15.  
  16. var
  17.     arbol: vector [100] Votacion
  18.     raiz, libre, temp, actual, padre, i, maxVotos, minVotos: numerico
  19.     opcion, votos: numerico
  20.     partido: cadena
  21.     encontrado: logico
  22.  
  23. inicio
  24.    cls()
  25.     raiz = 0
  26.     libre = 1
  27.  
  28.     // Inicializar la lista para el manejo de nodos libres
  29.     desde i=1 hasta 99 {
  30.         arbol[i].izquierdo = i + 1
  31.     }
  32.     arbol[100].izquierdo = 0
  33.  
  34.     repetir
  35.         imprimir("\nMenú:")
  36.         imprimir("\n1. Insertar Votación")
  37.         imprimir("\n2. Mostrar Votaciones")
  38.         imprimir("\n3. Mostrar Mayor y Menor Votación")
  39.         imprimir("\n4. Salir")
  40.         imprimir("\nElija una opción: ")
  41.         leer(opcion)
  42.  
  43.         eval {
  44.             caso (opcion ==1)
  45.                 // Insertar Votación
  46.                 si (libre == 0) {
  47.                     imprimir("\nEl árbol está lleno.")
  48.                 sino
  49.                     temp = libre
  50.                     libre = arbol[libre].izquierdo
  51.  
  52.                     imprimir("\nIntroduce el nombre del partido: ")
  53.                     leer(partido)
  54.                     imprimir("\nIntroduce el número de votos: ")
  55.                     leer(votos)
  56.  
  57.                     arbol[temp].partido = partido
  58.                     arbol[temp].votos = votos
  59.                     arbol[temp].izquierdo = 0
  60.                     arbol[temp].derecho = 0
  61.  
  62.                     si (raiz == 0) {
  63.                         raiz = temp
  64.                      sino
  65.                         actual = raiz
  66.                         encontrado = FALSE  // Variable booleana para controlar el bucle
  67.                         repetir
  68.                             padre = actual
  69.                             si (votos < arbol[actual].votos) {
  70.                                 actual = arbol[actual].izquierdo
  71.                                 si (actual == 0) {
  72.                                     arbol[padre].izquierdo = temp
  73.                                     encontrado = TRUE  // Se ha encontrado el lugar de inserción
  74.                                 }
  75.                             sino
  76.                                 actual = arbol[actual].derecho
  77.                                 si (actual == 0) {
  78.                                     arbol[padre].derecho = temp
  79.                                     encontrado = TRUE  // Se ha encontrado el lugar de inserción
  80.                                 }
  81.                             }
  82.                         hasta (encontrado)  // El bucle se repetirá hasta que se encuentre un lugar de inserción
  83.                     }
  84.                 }
  85.                 //romper
  86.  
  87.             caso (opcion ==2)
  88.                 // Mostrar Votaciones en orden
  89.                 imprimir("\nVotaciones en orden de votos:")
  90.  
  91.                 mostrar_en_orden(raiz)
  92.                 //romper
  93.  
  94.             caso (opcion ==3)
  95.                 // Mostrar Mayor y Menor Votación
  96.                 si (raiz == 0) {
  97.                     imprimir("\nEl árbol está vacío.")
  98.                  sino
  99.                     // Encontrar el menor número de votos
  100.                     actual = raiz
  101.                     mientras (arbol[actual].izquierdo <> 0) {
  102.                         actual = arbol[actual].izquierdo
  103.                     }
  104.                     minVotos = arbol[actual].votos
  105.                     imprimir("\nEl menor número de votos es: ", minVotos)
  106.  
  107.                     // Encontrar el mayor número de votos
  108.                     actual = raiz
  109.                     mientras (arbol[actual].derecho <> 0) {
  110.                         actual = arbol[actual].derecho
  111.                     }
  112.                     maxVotos = arbol[actual].votos
  113.                     imprimir("\nEl mayor número de votos es: ", maxVotos)
  114.                 }
  115.                 //romper
  116.  
  117.             caso (opcion ==4)
  118.                 imprimir("\nSaliendo del programa.")
  119.                 //romper
  120.  
  121.             sino
  122.                 imprimir("\nOpción no válida. Por favor, elija una opción válida.")
  123.                 //romper
  124.         }
  125.     hasta (opcion == 4)
  126. fin
  127.  
  128.  
  129. subrutina mostrar_en_orden(nodo: numerico)
  130. inicio
  131.       si (nodo <> 0) {
  132.          mostrar_en_orden(arbol[nodo].izquierdo)
  133.          imprimir("\nPartido: ", arbol[nodo].partido, ", Votos: ", arbol[nodo].votos)
  134.          mostrar_en_orden(arbol[nodo].derecho)
  135.       }
  136. fin
  137.  
Tags: Arboles
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement