#Opción B #Ejercicio 3 #Creo una función auxiliar para comprobar si es vocal fun esvocal?(letra): x = mayuscula(letra) dev x == 'A' o x == 'E' o x == 'I' o x == 'O' o x == 'U' finfun fun cuenta_vocales(pila): si es_vacia?(p): dev 0 fin si si esvocal?(cima(pila)): dev (1 + cuenta_vocales(desapilar(pila))) si no: dev cuenta_vocales(desapilar(pila)) fin si fin fun #Sin recursividad fun elimina_vocales(pila): si es_vacia?(pila): dev NULL pAux = NULL mientras !es_Vacia(pila): si esvocal?(cima(pila)): apilar(cima(pila), pAux) si no: desapilar(pila) fin si fin mientras dev pAux fin fun #Recursividad fun solo_vocales(pila): si es_vacia?(pila): devolver pila fin si si es_vocal(cima(pila)): apilar(cima(pila), solo_vocales(desapilar(pila))) si no: dev solo_vocales(desapilar(pila)) fin si fin fun # c fun es_palabra(pila): si es_vacia?(pila): dev False fin si aux = True cimaAux = cima(pila) desapilar(pila) mientras !es_vacia?(pila): si esvocal?(cimaAux) y esvocal?(cima(pila)): aux = False si !esvocal?(cimaAux) y !esvocal?(cima(pila)): aux = False cimaAux = cima(pila) desapilar(pila) fin mientras dev aux fin fun #---------Ejercicio 4 -------------# tipo dobleCola: c1 : cola c2 : cola fun descomponer(c): doble_cola = doble_cola() #crea una doblecola vacía turno = 0 si es_vacia(c): dev doble_cola fin si mientras !es_vacia(c): si turno = 0: doble_cola.encolar(cima(c),c1) desapilar(c) turno = 1 si no: doble_cola.encolar(cima(c), c2) desapilar(c) turno = 0 finsi fin mientras dev doble_cola fin fun #Forma iterativa fun mezclar(doble): cola = NULL si es_vacia?(doble.c1) y es_vacia?(doble.c2): dev cola fin si mientras !es_vacia?(doble.c1) o !es_vacia?(doble.c2): si !es_vacia?(doble.c1): #Añade la cima de la primera encolar(cima(doble.c1)) desencolar(cima(doble.c1)) si !es_vacia?(doble.c2): #Añade la cima de la segunda encolar(cima(doble.c2)) desencolar(cima(doble.c2)) fin mientras dev cola fin fun #Recursiva fun mezclar(doble, cola_mezclada): si es_vacia?(doble.cola1) y es_vacia?(doble.c2): devolver cola_mezclada fin si si !es_vacia?(doble.cola1): encolar(cola_mezclada, cima(doble.c1)) desencolar(doblecola.c1) fin si si !es_vacia?(doblecola.cola2): encolar(cola_mezclada, cima(doble.c2)) desencolar(doblecola.c2) fin si devolver mezclar(doble, cola_mezclada) fin fun