Advertisement
StreetKatya

Калькулятор по опз

Jun 13th, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. static int Calculating(string opz)
  2. {
  3. string OPZ = opz.ToString();
  4. int result = 0;
  5. Stack<int> stack = new Stack<int>();
  6. for (int i = 0; i < OPZ.Length; i++)
  7. {
  8.  
  9. if (Char.IsDigit(OPZ[i]))
  10. {
  11. string str = string.Empty;
  12. while (!Mest(OPZ[i].ToString()) && !Oper(OPZ[i]))
  13. {
  14. str = str + OPZ[i];
  15. i++;
  16. if (i == OPZ.Length)
  17. break;
  18. }
  19. stack.Push(int.Parse(str));
  20. i--;
  21. }
  22. else if (Char.IsLetter(OPZ[i]))
  23. {
  24. string str = string.Empty;
  25. while (!Mest(OPZ[i].ToString()) && !Oper(OPZ[i]))
  26. {
  27. Console.WriteLine("Введите {0}", OPZ[i]);
  28. char item = char.Parse(Console.ReadLine());
  29. str = str + item;
  30. i++;
  31. if (i == OPZ.Length)
  32. {
  33. break;
  34. }
  35. }
  36. stack.Push(int.Parse(str));
  37. i--;
  38. }
  39. else if (Oper(OPZ[i]))
  40. {
  41. int a = stack.Pop();
  42. int b = stack.Pop();
  43. switch (OPZ[i])
  44. {
  45. case '+': result = b + a; break;
  46. case '-': result = b - a; break;
  47. case '*': result = b * a; break;
  48. case '/': result = b / a; break;
  49. case '%': result = b % a; break;
  50. case '|': result = b | a; break;
  51. case '&': result = b & a; break;
  52. case '^': result = int.Parse(Math.Pow(int.Parse(b.ToString()), int.Parse(a.ToString())).ToString()); break;
  53. }
  54. stack.Push(result);
  55. }
  56. }
  57. return stack.Peek();
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement