Gràcies per la referència del llibre. Estic d'acord amb el Joan que la solució del llibre al problema en qüestió, tot i que pot servir com a il·lustració de l'ús de piles, no és la més senzilla, però no crec que sigui una qüestió de llenguatge de programació. La versió de l'algorisme del Joan en C++ no és més complexa. Heus aquí una variant: ================= /* ENUNCIADO: El programa recibirá una cadena, con un conjunto de paréntesis ( o ) y deberá indicar si están bien cerrados o no. */ #include <iostream> using namespace std; int main() { int pcount = 0; char c; while ((cin >> c) && pcount >=0) { switch (c) { case '(': ++pcount; break; case ')': --pcount; } } cout << ((pcount == 0) ? "SI\n" : "NO\n"); return 0; } ===================== Salutacions. José Moreno El 31 de enero de 2014, 17:11, Joan Josep Ordinas Rosa < jordinas@xxxxxxxxxxxxxxxxxxxxxxxxxxx> escribió: > > Para facilitar la preparación de la competición, he publicado un libro > bajo licencia Creative Commons llamado "Introducción a los concursos de > programación". > > > > Dicho libro lo podéis obtener en > http://hispabyte.net/libro-introduccion-a-los-concursos-de-programacion/ > > Sempre fa servei un llibre com aquest. Jo, de totes formes, trio C en > lloc de C++ per problemes com el darrer del llibre, > que en 45 minuts he resolt així (podeu comparar la solució amb la del > llibre): > > ========================== > /* ENUNCIADO: El programa recibirá una cadena, con un conjunto de > paréntesis ( o ) y deberá indicar si están bien cerrados o no. */ > > #include <stdio.h> > > int main() { > int c, pcount = 0; > > while ((c = getchar()) != EOF) { > if (c == '(') { > ++pcount; > } else if (c == ')') { > --pcount; > if (pcount < 0) { > break; > } > } else { > break; > } > } > printf((pcount == 0) ? "SI\n" : "NO\n"); > return 0; > } > ========================== > > JJOR > >