Sacar expresión de una string

Iniciado por howara, 3 Mayo 2015, 12:06 PM

0 Miembros y 1 Visitante están viendo este tema.

howara

Buenas, llevo algún tiempo haciendo ejercicios en c++ por mi cuenta y ahora mismo ando un poco parado en el siguiente ejercicio:

-Tenemos una expresión que siempre empieza entre paréntesis y que contiene como mínimo un elemento que es una secuencia de letras. En el caso de que hubiese elementos separados por comas el resultado sería la conjunción de ambos elementos y en caso de que fuese una separación con punto el resultado sería la disyunción de ambos elementos.

Un ejemplo de expresión podría ser "(pepito.(pablito,leucisco))" . Con ella se buscarían las películas con etiquetas pepito y pablito o pepito y leucisco. Como se puede apreciar cabe la posibilidad de que hayan más paréntesis dentro de expresiones.

¿Para qué usar esto? Básicamente me gustaría aprender a buscar por filtros. Un ejemplo es imaginar que he hecho un programa para buscar en una base de datos películas con etiquetas específicas.

Por ahora he hecho una función auxiliar que ayudaría a tratar la expresión dado que te dice el número de etiquetas que hay y también, dándole el número de etiqueta (si hay dos, sería algo así como decir: ¡Dame la uno!) te devuelve la etiqueta.

¿Qué empezaríais por tratar? ¿Por qué?

Gracias :)


ivancea96

Veo dos formas básicas de hacerlo: una recursiva, que es cogiendo cada miembro dentro de los paréntesis, y si algún miembro (o ambos), es otro par de paréntesis, llamar recursivamente.
El otro método, podría consistir en ir buscando pares de paréntesis adyacentes "(...,...)", resolverlos, y reemplazarlos en la cadena. Hacer esto hasta que no queden más paréntesis.

howara

Sí, yo al principio también me lo he planteado de la primera forma que has dicho, hacerlo de forma recursiva, parece la forma más idónea de resolverlo. Creo que más que difícil el ejercicio será algo pesado.