Advertisement
Lavig

Другий семестр. Лабораторна робота №14-15 (Завдання 1)

Apr 20th, 2025 (edited)
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <stack>
  4. #include <string>
  5. #include <sstream>
  6. #include <cctype>
  7.  
  8. using namespace std;
  9.  
  10. int main() {
  11.     SetConsoleOutputCP(1251);
  12.     SetConsoleCP(1251);
  13.     stack<int> s{};
  14.     string input{}, part{};
  15.     cout << "Введіть вираз у зворотному польському записі:" << endl;
  16.     getline(cin, input);
  17.     stringstream ss(input);
  18.     while (ss >> part) {
  19.         if (part == "+" || part == "-" || part == "*" || part == "/") {
  20.             if (s.size() < 2) {
  21.                 cout << "У виразі недостатньо чисел для виконання операції." << endl;
  22.                 return 0;
  23.             }
  24.             int b = s.top();
  25.             s.pop();
  26.             int a = s.top();
  27.             s.pop();
  28.             if (part == "+") {
  29.                 s.push(a + b);
  30.             }
  31.             else if (part == "-") {
  32.                 s.push(a - b);
  33.             }
  34.             else if (part == "*") {
  35.                 s.push(a * b);
  36.             }
  37.             else if (part == "/") {
  38.                 s.push(a / b);
  39.             }
  40.         }
  41.         else {
  42.             try {
  43.                 int num = stoi(part);
  44.                 s.push(num);
  45.             }
  46.             catch (...) {
  47.                 cout << "'" << part << "' не є числом або оператором." << endl;
  48.                 return 0;
  49.             }
  50.         }
  51.     }
  52.     if (s.size() == 1) {
  53.         cout << "Результат: " << s.top() << endl;
  54.     }
  55.     else {
  56.         cout << "Було введено неправильну кількість чисел або операцій." << endl;
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement