Написать программу, которая преобразует выражение из инфиксной формы в префиксную - C#
Формулировка задачи:
Используя класс Stack написать программу, которая преобразует выражение из инфиксной формы в префиксную.
т.е. по такому принципу:
Решение задачи: «Написать программу, которая преобразует выражение из инфиксной формы в префиксную»
textual
Листинг программы
class Program { static void Main(string[] args) { // string infix = "3 ^ 4 + ( 11 - ( 3 * 2 ) ) / 2"; string infix = "3 + 2"; string[] tokens = infix.Split(' '); Stack<string> s = new Stack<string>(); List<string> outputList = new List<string>(); int n; foreach (string c in tokens) { if (int.TryParse(c.ToString(), out n)) { outputList.Add(c); } if (c == "(") { s.Push(c); } if (c == ")") { while (s.Count != 0 && s.Peek() != "(") { outputList.Add(s.Pop()); } s.Pop(); } if (isOperator(c) == true) { while (s.Count != 0 && Priority(s.Peek()) >= Priority(c)) { outputList.Add(s.Pop()); } s.Push(c); } } while (s.Count != 0)//if any operators remain in the stack, pop all & add to output list until stack is empty { outputList.Add(s.Pop()); } for (int i = 0; i < outputList.Count; i++) { Console.Write("{0}", outputList[i]); } Console.ReadLine(); } static int Priority(string c) { if (c == "^") { return 3; } else if (c == "*" || c == "/") { return 2; } else if (c == "+" || c == "-") { return 1; } else { return 0; } } static bool isOperator(string c) { if (c == "+" || c == "-" || c == "*" || c == "/" || c == "^") { return true; } else { return false; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д