#include #include int pri = 0; class Ag { public: char jel; int pri; Ag *bal, *jobb; Ag(char c, int p) { jel = c; pri = p; if (c == '\n') ; else if (c == '+' || c == '-') pri += 1; else if (c == '*' || c == '/') pri += 2; else pri += 3; bal = jobb = NULL; } ~Ag() { if (bal) delete bal; if (jobb) delete jobb; } void kiir() { if (isalpha(jel)) cout << jel; else { if ((jel == '*' || jel == '/') && (bal->jel == '+' || bal->jel == '-')) { cout << '('; bal->kiir(); cout << ')'; } else bal->kiir(); cout << jel; if (((jel == '-' && (jobb->jel == '+' || jobb->jel == '-')) || jel == '/' || (jel == '*' && (jobb->jel == '+' || jobb->jel == '-'))) && !isalpha(jobb->jel)) { cout << '('; jobb->kiir(); cout << ')'; } else jobb->kiir(); } } }; Ag *kov; void kovetkezot() { char c; while (1) { cin.get(c); if (c == '(') pri += 5; else if (c == ')') pri -= 5; else if (c == '\n') { kov = new Ag(c, 0); return; } else { kov = new Ag(c, pri); return; } } } Ag *legalabb(int la) { kovetkezot(); Ag *bal = kov; kovetkezot(); while (kov->pri >= la) { kov->bal = bal; bal = kov; bal->jobb = legalabb(kov->pri + 1); } return bal; } int main() { int esetek; cin >> esetek; cin.ignore(); while (esetek--) { Ag *ag = legalabb(1); ag->kiir(); cout << "\n"; } }