Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "stdlib.h"
- #include "stdio.h"
- #include <iostream>
- #include <string>
- using namespace std;
- int main()
- {
- //expresion given by the user
- string expressionToCalc;
- //array to store eqation in RPN
- string reversedPolishNotation[255];
- //get expression from the user
- getline(cin, expressionToCalc);
- expressionToCalc += '\0';
- int onp_iterator = 0;
- string helper = "";
- for (int i = 1; i < expressionToCalc.length(); i++)
- {
- char character = expressionToCalc[i - 1];
- if (character == '0' || character == '1' || character == '2' || character == '3' || character == '4'
- || character == '5' || character == '6' || character == '7' || character == '8' || character == '9'
- || character == '-' || character == '+' || character == '*' || character == '/')
- {
- helper += character;
- }
- else if (character == ' ')
- {
- reversedPolishNotation[onp_iterator] = helper;
- onp_iterator++;
- helper.clear();
- }
- }
- reversedPolishNotation[onp_iterator] = helper;
- // calculate value of an expression represented in array
- bool flag = true;
- while (flag) {
- for (int i = 0; i < 255; i++)
- {
- if (reversedPolishNotation[1] == "\0")
- {
- flag = false;
- break;
- }
- if (reversedPolishNotation[i] == "-")
- {
- reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) - stof(reversedPolishNotation[i - 1]));
- i++;
- for (; reversedPolishNotation[i] != "\0"; i++) {
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- }
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- break;
- }
- if (reversedPolishNotation[i] == "+")
- {
- reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) + stof(reversedPolishNotation[i - 1]));
- i++;
- for (; reversedPolishNotation[i] != "\0"; i++) {
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- }
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- break;
- }
- if (reversedPolishNotation[i] == "/")
- {
- reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) / stof(reversedPolishNotation[i - 1]));
- i++;
- for (; reversedPolishNotation[i] != "\0"; i++) {
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- }
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- break;
- }
- if (reversedPolishNotation[i] == "*")
- {
- reversedPolishNotation[i - 2] = to_string(stof(reversedPolishNotation[i - 2]) * stof(reversedPolishNotation[i - 1]));
- i++;
- for (; reversedPolishNotation[i] != "\0"; i++) {
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- }
- reversedPolishNotation[i - 2] = reversedPolishNotation[i];
- break;
- }
- }
- }
- cout << reversedPolishNotation[0] << endl;
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement