Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Practica61
- Las votaciones de diferentes partidos son almacenadas en un árbol binario de búsqueda,
- decir cual fue el numero de votaciones mayor y cuál fue el menor.
- */
- tipos
- Votacion: registro {
- partido: cadena
- votos: numerico
- izquierdo: numerico
- derecho: numerico
- }
- var
- arbol: vector [100] Votacion
- raiz, libre, temp, actual, padre, i, maxVotos, minVotos: numerico
- opcion, votos: numerico
- partido: cadena
- encontrado: logico
- inicio
- cls()
- raiz = 0
- libre = 1
- // Inicializar la lista para el manejo de nodos libres
- desde i=1 hasta 99 {
- arbol[i].izquierdo = i + 1
- }
- arbol[100].izquierdo = 0
- repetir
- imprimir("\nMenú:")
- imprimir("\n1. Insertar Votación")
- imprimir("\n2. Mostrar Votaciones")
- imprimir("\n3. Mostrar Mayor y Menor Votación")
- imprimir("\n4. Salir")
- imprimir("\nElija una opción: ")
- leer(opcion)
- eval {
- caso (opcion ==1)
- // Insertar Votación
- si (libre == 0) {
- imprimir("\nEl árbol está lleno.")
- sino
- temp = libre
- libre = arbol[libre].izquierdo
- imprimir("\nIntroduce el nombre del partido: ")
- leer(partido)
- imprimir("\nIntroduce el número de votos: ")
- leer(votos)
- arbol[temp].partido = partido
- arbol[temp].votos = votos
- arbol[temp].izquierdo = 0
- arbol[temp].derecho = 0
- si (raiz == 0) {
- raiz = temp
- sino
- actual = raiz
- encontrado = FALSE // Variable booleana para controlar el bucle
- repetir
- padre = actual
- si (votos < arbol[actual].votos) {
- actual = arbol[actual].izquierdo
- si (actual == 0) {
- arbol[padre].izquierdo = temp
- encontrado = TRUE // Se ha encontrado el lugar de inserción
- }
- sino
- actual = arbol[actual].derecho
- si (actual == 0) {
- arbol[padre].derecho = temp
- encontrado = TRUE // Se ha encontrado el lugar de inserción
- }
- }
- hasta (encontrado) // El bucle se repetirá hasta que se encuentre un lugar de inserción
- }
- }
- //romper
- caso (opcion ==2)
- // Mostrar Votaciones en orden
- imprimir("\nVotaciones en orden de votos:")
- mostrar_en_orden(raiz)
- //romper
- caso (opcion ==3)
- // Mostrar Mayor y Menor Votación
- si (raiz == 0) {
- imprimir("\nEl árbol está vacío.")
- sino
- // Encontrar el menor número de votos
- actual = raiz
- mientras (arbol[actual].izquierdo <> 0) {
- actual = arbol[actual].izquierdo
- }
- minVotos = arbol[actual].votos
- imprimir("\nEl menor número de votos es: ", minVotos)
- // Encontrar el mayor número de votos
- actual = raiz
- mientras (arbol[actual].derecho <> 0) {
- actual = arbol[actual].derecho
- }
- maxVotos = arbol[actual].votos
- imprimir("\nEl mayor número de votos es: ", maxVotos)
- }
- //romper
- caso (opcion ==4)
- imprimir("\nSaliendo del programa.")
- //romper
- sino
- imprimir("\nOpción no válida. Por favor, elija una opción válida.")
- //romper
- }
- hasta (opcion == 4)
- fin
- subrutina mostrar_en_orden(nodo: numerico)
- inicio
- si (nodo <> 0) {
- mostrar_en_orden(arbol[nodo].izquierdo)
- imprimir("\nPartido: ", arbol[nodo].partido, ", Votos: ", arbol[nodo].votos)
- mostrar_en_orden(arbol[nodo].derecho)
- }
- fin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement