Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <string>
- #include <map>
- #include <functional>
- #include <sstream>
- #include <vector>
- using namespace std;
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- system("color 0A");
- map<char, function<double(double, double)>> f;
- f.insert(make_pair('+', [](double d1, double d2) { return d1 + d2; }));
- f.insert(make_pair('-', [](double d1, double d2) { return d1 - d2; }));
- f.insert(make_pair('*', [](double d1, double d2) { return d1 * d2; }));
- f.insert(make_pair('/', [](double d1, double d2) { return d1 / d2; }));
- f.insert(make_pair('^', [](double d1, double d2) { return pow(d1, d2); }));
- string s;
- cout << "Введите мат выражение" << endl;
- getline(cin, s);
- stringstream ss(s);
- auto flag = true;
- vector<double> values;
- string signals;
- for (;ss;)
- {
- if (flag)
- {
- double value;
- ss >> value;
- values.push_back(value);
- flag = !flag;
- }
- else
- {
- char signal;
- ss >> signal;
- signals.push_back(signal);
- flag = !flag;
- }
- }
- auto result = values[0u];
- for (size_t u = 1u; u < values.size(); ++u)
- {
- result = f[signals[u - 1u]](result, values[u]);
- }
- cout << "Результат = " << result << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement