/*! Programma che legge una sequenza di espressioni aritmetiche da file e, utilizzando una pila di char, e' in grado di dire se le parentesi tonde di ogni espressione letta sono bilanciate e coerenti. Fornisce come output la sequenza di espressioni seguite dal messaggio ``Errata'' qualora le parentesi non siano bilanciate e coerenti. */ #include #include #include #include "Pila.hh" void esamina_parentesi(const string& s) { cout << s << endl; Pila P; for (unsigned int i = 0; i < s.size(); i++) if (s[i] == '(') P.push('('); else if (s[i] == ')') if (P.pop() == '@') cout << "Errata" << endl; if (!P.empty()) cout << "Errata" << endl; } int main() { ifstream in_file("espressioni.txt"); if (!in_file) { cerr << "Manca il file ''espressioni.txt''" << endl; return 1; } string s; while (in_file >> s) esamina_parentesi(s); in_file.close(); return 0; }