Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <string>
- #include <vector>
- #include <stdexcept>
- #include <stack>
- std::vector<std::string> Split(const std::string& string, const std::string& delim = " ") {
- std::vector<std::string> container;
- size_t start = 0;
- size_t end = string.find(delim);
- size_t n = string.size();
- for (size_t i = start; i < n; i++) {
- if (i == end) {
- container.push_back(string.substr(start, end-start));
- start = end + delim.size();
- end = string.find(delim, start);
- }
- }
- if (end == std::string::npos) {
- container.push_back(string.substr(start));
- }
- return container;
- }
- int EvaluateExpression(const std::string& expr) {
- std::stack <int> chisla;
- std::vector<std::string> v;
- int a, b;
- v = Split(expr);
- std::cout << "this is v: " << v << std::endl;
- int n = v.size();
- for (int i = 0; i < n; ++i) {
- std::cout << "this is v[i]: " << v[i] << " and v[i][0]: " << v[i][0] << std::endl;
- if (v[i][0] != '+' && v[i][0] != '-' && v[i][0] != '*') {
- chisla.push(std::stoi(v[i]));
- continue;
- }
- if (v[i][0] == '+') {
- a = int(chisla.top());
- chisla.pop();
- b = int(chisla.top());
- chisla.pop();
- chisla.push(a+b);
- } else if (v[i][0] == '-') {
- a = int(chisla.top());
- chisla.pop();
- b = int(chisla.top());
- chisla.pop();
- chisla.push(b-a);
- } else if (v[i][0] == '*') {
- a = int(chisla.top());
- chisla.pop();
- b = int(chisla.top());
- chisla.pop();
- chisla.push(a*b);
- }
- }
- return chisla.top();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement