[ Foro de Pascal ]

Contar llaves anidadas

03-Jun-2013 11:41
juan garcia
4 Respuestas

Hola, como puedo hacer programa que introducida una frase , me cuente el numero máximo de anidamiento de llaves. Ejemplo
esto {es} un {ejemplo {del} problema} y me saque que el grado maximo es 2.


03-Jun-2013 19:34
Nacho Cabanes (+84)

Puedes llevar un contador, que incrementas con cada llave que abres y decrementas con cada llave que cierras.

Si a eso le añades un máximo, y comparas el contador para ver si ha superado el máximo, ya lo tienes:

contador = 0
maximo = 0
Para cada letra en frase
-- si letra = "{" entonces incrementar( contador )
-- si maximo > contador entonces maximo = contador
-- si letra = "}" entonces decrementar( contador )

Si la frase está "bien diseñada" (las llaves están equilibradas), al terminar "contador" debería valer 0.


03-Jun-2013 20:01
juan garcia

¿como hago para que si la frase empieza por } pare automaticamnte?
He intentado hacer:
if leta=')' then para else begin  
  {ahora va todo el codigo que has dicho}
end;

Gracias


03-Jun-2013 20:29
juan garcia

Se me ha olvidado decir que se introducen varias lineas


06-Jun-2013 23:42
Nacho Cabanes (+84)

Lo de salir si empieza por "}", o incluso en casos no válidos como "{}}" es simplemente cuestión de comprobar si "contador" es negativo en algún momento. En ese caso, sales con un mensaje de error (o, si es una función, devolviendo un valor que indique que no es una frase correcta).

Lo de que se introduzcan varias líneas no le añade mucha más complejidad: es otro "for" que repita la estructura anterior para cada línea.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)