יונ.04

מחשבון בצורה של מכונת סטאק

מחשבון בצורה של מכונת סטאק

יש לכתוב קוד לחישוב נוסחה, שרשומה בכתיב פולני בעזרת שימוש בסטאק.

  1. static void Main(string[] args)
  2. {
  3. Console.Write(solution("512+4*+3-"));
  4. Console.ReadKey();
  5. }
  6.  
  7. public static int solution(string S)
  8. {
  9. Stack<int> stackCreated = new Stack<int>();
  10. foreach (var t in S) {
  11. int num;
  12. if (int.TryParse(t.ToString(), out num))
  13. stackCreated.Push(num);
  14. else {
  15. int store1 = stackCreated.Pop();
  16. int store2 = stackCreated.Pop();
  17. switch (t)
  18. {
  19. case '+': store2 += store1; break;
  20. case '-': store2 -= store1; break;
  21. case '*': store2 *= store1; break;
  22. case '/': store2 /= store1; break;
  23. case '%': store2 %= store1; break;
  24. case '^': store2 = (int)Math.Pow(store1, store2); break;
  25. default: throw new Exception();
  26. }
  27. stackCreated.Push(store2);
  28. }
  29. }
  30. if (stackCreated.Count != 1)
  31. throw new Exception("Wrong input string");
  32.  
  33. return stackCreated.Pop();
  34. }


שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה