Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <string>
  4. #include <vector>
  5. #include <stdexcept>
  6. #include <stack>
  7.  
  8. std::vector<std::string> Split(const std::string& string, const std::string& delim = " ") {
  9.  
  10. std::vector<std::string> container;
  11. size_t start = 0;
  12. size_t end = string.find(delim);
  13. size_t n = string.size();
  14. for (size_t i = start; i < n; i++) {
  15. if (i == end) {
  16. container.push_back(string.substr(start, end-start));
  17. start = end + delim.size();
  18. end = string.find(delim, start);
  19. }
  20. }
  21. if (end == std::string::npos) {
  22. container.push_back(string.substr(start));
  23. }
  24. return container;
  25. }
  26.  
  27.  
  28. int EvaluateExpression(const std::string& expr) {
  29. std::stack <int> chisla;
  30. std::vector<std::string> v;
  31. int a, b;
  32. v = Split(expr);
  33. std::cout << "this is v: " << v << std::endl;
  34. int n = v.size();
  35. for (int i = 0; i < n; ++i) {
  36. std::cout << "this is v[i]: " << v[i] << " and v[i][0]: " << v[i][0] << std::endl;
  37. if (v[i][0] != '+' && v[i][0] != '-' && v[i][0] != '*') {
  38. chisla.push(std::stoi(v[i]));
  39. continue;
  40. }
  41. if (v[i][0] == '+') {
  42. a = int(chisla.top());
  43. chisla.pop();
  44. b = int(chisla.top());
  45. chisla.pop();
  46. chisla.push(a+b);
  47. } else if (v[i][0] == '-') {
  48. a = int(chisla.top());
  49. chisla.pop();
  50. b = int(chisla.top());
  51. chisla.pop();
  52. chisla.push(b-a);
  53. } else if (v[i][0] == '*') {
  54. a = int(chisla.top());
  55. chisla.pop();
  56. b = int(chisla.top());
  57. chisla.pop();
  58. chisla.push(a*b);
  59. }
  60. }
  61. return chisla.top();
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement