Advertisement
a53

eval_exp2

a53
Jun 12th, 2020
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #define MAX 51
  3. using namespace std;
  4. char s[MAX],*p=s;
  5.  
  6. long long termen();
  7. long long factor();
  8.  
  9. long long eval()
  10. {
  11. long long r=termen();
  12. while(*p=='+' || *p=='-')
  13. switch (*p)
  14. {
  15. case '+':
  16. ++p;
  17. r+=termen();
  18. break;
  19. case '-':
  20. ++p;
  21. r-=termen();
  22. break;
  23. }
  24. return r;
  25. }
  26.  
  27. long long termen()
  28. {
  29. long long r=factor();
  30. while(*p=='*' || *p=='/')
  31. switch(*p)
  32. {
  33. case '*' :
  34. ++p;
  35. r*=factor();
  36. break;
  37. case '/':
  38. ++p;
  39. r/=factor();
  40. break;
  41. }
  42. return r;
  43. }
  44.  
  45. long long factor()
  46. {
  47. long long r=0;
  48. if(*p=='(')
  49. {
  50. ++p;
  51. r=eval();
  52. ++p;
  53. }
  54. else
  55. {
  56. while(*p>='0' && *p<='9')
  57. {
  58. r=r*10+*p-'0';
  59. ++p;
  60. }
  61. }
  62. return r;
  63. }
  64.  
  65. int main()
  66. {
  67. cin.get(s,MAX);
  68. cout<<eval();
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement