Advertisement
Ver0n1ka

Untitled

Jan 19th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. float number()
  5. {
  6.     int res = 0;
  7.     for (;;)
  8.     {
  9.         char c = cin.get();
  10.         if (c >= '0' && c <= '9')
  11.             res = res * 10 + c - '0';
  12.         else
  13.         {
  14.             cin.putback(c);
  15.             return res;
  16.         }
  17.     }
  18. }
  19.  
  20. float expr();
  21.  
  22. float skobki()
  23. {
  24.     char c = cin.get();
  25.     if (c == '(')
  26.     {
  27.         float x = expr();
  28.         cin.get();
  29.         return x;
  30.     }
  31.     else
  32.     {
  33.         cin.putback(c);
  34.         return number();
  35.     }
  36. }
  37.  
  38. float factor()
  39. {
  40.     float x = skobki();
  41.     for (;;)
  42.     {
  43.         char c = cin.get();
  44.         switch (c)
  45.         {
  46.         case '*':
  47.             x *= skobki();
  48.             break;
  49.         case '/':
  50.             x /= skobki();
  51.             break;
  52.         default:
  53.             cin.putback(c);
  54.             return x;
  55.         }
  56.     }
  57. }
  58.  
  59. float expr()
  60. {
  61.     float x = factor();
  62.     for (;;)
  63.     {
  64.         char c = cin.get();
  65.         switch (c)
  66.         {
  67.         case '+':
  68.             x += factor();
  69.             break;
  70.         case '-':
  71.             x -= factor();
  72.             break;
  73.         default:
  74.             cin.putback(c);
  75.             return x;
  76.         }
  77.     }
  78. }
  79.  
  80.  
  81. int main()
  82. {
  83.     cout << "Введите выражение: ";
  84.     float res = expr();
  85.     cout << "Результат: " << res << endl;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement