#include #include #include #include using namespace std; using ArithFun = double(double); const map> funs{ {"exp", static_cast(exp)}, {"ln", static_cast(log)}, {"log10", [](double x) -> double { return log(x)/log(10); }}, {"cos", static_cast(cos)}, {"sin", static_cast(sin)}, {"arccos", static_cast(acos)}, {"arcsin", static_cast(asin)} }; int main() { while (true) { string fun; double val; cout << "> "; if (!(cin >> fun >> val)) break; try { cout << (funs.at(fun))(val) << endl; } catch (const out_of_range&) { cout << "Unknown function: " << fun << endl; } } }