int main() { try { Chain chain; chain.addFilter(new FileEmiter("input.txt")); int choise; do { printMenu(); char str[256]; cin.getline(str, 256); choise = -1; if(regex_match(str, regex("^(0|[1-9]\\d*)$"))) choise = atoi(str); switch(choise) { case 0://exit break; case 1: chain.addFilter(new Sumator(50)); chain.addFilter(new Multiplyer(1.0 / 50.0)); break; case 2: chain.addFilter(new Percintilizer(11)); break; case 3: chain.addFilter(new Loop(50, 5)); chain.addFilter(new Multiplyer(1.0 / 50.0)); break; case 4: chain.addFilter(new Oscilator(20.0, 2.0, 0.01)); break; default: cerr << "imposible input"; } } while(choise); chain.addFilter(new FileReciver("output.txt")); while(chain.canWork()) chain.processSample(); cout << "work done\n"; } catch(exception &e) { cerr << e.what() << endl; } catch(...) { cerr << "something unexpected occurs\n"; } return 0; }