Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <list>
- int charToInt(char c) {
- return c - '0';
- }
- int check(char c)
- {
- return (c == '2' || c == '3' || c == '4' || c == '+' || c == '*') ? 1 : 0;
- }
- int calculate(char op, int a, int b) {
- if (op == '+') {
- return a + b;
- }
- else if (op == '*') {
- return a * b;
- }
- }
- int result(std::string string) {
- std::list<int> stack;
- for (int i = 0; i < string.length(); i++) {
- char token = string[i];
- if (!check(token)) return -1;
- if (token >= '0' && token <= '9') {
- stack.push_back(charToInt(token));
- }
- else {
- int a = stack.back();
- stack.pop_back();
- int b = stack.back();
- stack.pop_back();
- int result = calculate(token, a, b);
- stack.push_back(result);
- }
- }
- return stack.back();
- };
- int main()
- {
- std::string string;
- setlocale(LC_ALL, "russian");
- std::cout << "Ваше выражение: " << std::endl;
- std::cin >> string;
- std::cout << result(string) << std::endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement