Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "stdlib.h"
  3. #include "stdio.h"
  4. #include <iostream>
  5. #include <string>
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. int main()
  16. {
  17. //expresion given by the user
  18. string expressionToCalc;
  19. //array to store eqation in RPN
  20. string reversedPolishNotation[255];
  21. //get expression from the user
  22. getline(cin, expressionToCalc);
  23. expressionToCalc += '\0';
  24. int onp_iterator = 0;
  25. string helper = "";
  26.  
  27. for (int i = 1; i < expressionToCalc.length(); i++)
  28. {
  29. char character = expressionToCalc[i - 1];
  30.  
  31.  
  32. if (character == '0' || character == '1' || character == '2' || character == '3' || character == '4'
  33. || character == '5' || character == '6' || character == '7' || character == '8' || character == '9'
  34. || character == '-' || character == '+' || character == '*' || character == '/')
  35. {
  36. helper += character;
  37.  
  38. }
  39.  
  40.  
  41. else if (character == ' ')
  42. {
  43.  
  44. reversedPolishNotation[onp_iterator] = helper;
  45. onp_iterator++;
  46. helper.clear();
  47.  
  48. }
  49. }
  50. reversedPolishNotation[onp_iterator] = helper;
  51.  
  52.  
  53. // calculate value of an expression represented in array
  54. bool flag = true;
  55. while (flag) {
  56. for (int i = 0; i < 255; i++)
  57. {
  58. if (reversedPolishNotation[1] == "\0")
  59. {
  60. flag = false;
  61. break;
  62. }
  63. if (reversedPolishNotation[i] == "-")
  64. {
  65. reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) - stof(reversedPolishNotation[i - 1]));
  66. i++;
  67. for (; reversedPolishNotation[i] != "\0"; i++) {
  68. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  69. }
  70. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  71. break;
  72. }
  73. if (reversedPolishNotation[i] == "+")
  74. {
  75. reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) + stof(reversedPolishNotation[i - 1]));
  76. i++;
  77. for (; reversedPolishNotation[i] != "\0"; i++) {
  78. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  79. }
  80. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  81. break;
  82. }
  83. if (reversedPolishNotation[i] == "/")
  84. {
  85. reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) / stof(reversedPolishNotation[i - 1]));
  86. i++;
  87. for (; reversedPolishNotation[i] != "\0"; i++) {
  88. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  89. }
  90. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  91. break;
  92. }
  93. if (reversedPolishNotation[i] == "*")
  94. {
  95. reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) * stof(reversedPolishNotation[i - 1]));
  96. i++;
  97. for (; reversedPolishNotation[i] != "\0"; i++) {
  98. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  99. }
  100. reversedPolishNotation[i - 2] = reversedPolishNotation[i];
  101. break;
  102. }
  103. }
  104.  
  105. }
  106. cout << reversedPolishNotation[0] << endl;
  107. system("PAUSE");
  108. return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement