Написать программу, которая преобразует выражение из инфиксной формы в префиксную - C#

Узнай цену своей работы

Формулировка задачи:

Используя класс Stack написать программу, которая преобразует выражение из инфиксной формы в префиксную. т.е. по такому принципу:

Решение задачи: «Написать программу, которая преобразует выражение из инфиксной формы в префиксную»

textual
Листинг программы
  1.    class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.  //           string infix = "3 ^ 4 + ( 11 - ( 3 * 2 ) ) / 2";
  6.  
  7.             string infix = "3 + 2";
  8.             string[] tokens = infix.Split(' ');
  9.  
  10.             Stack<string> s = new Stack<string>();
  11.             List<string> outputList = new List<string>();
  12.             int n;
  13.             foreach (string c in tokens)
  14.             {
  15.                 if (int.TryParse(c.ToString(), out n))
  16.                 {
  17.                     outputList.Add(c);
  18.                 }
  19.                 if (c == "(")
  20.                 {
  21.                     s.Push(c);
  22.                 }
  23.                 if (c == ")")
  24.                 {
  25.                     while (s.Count != 0 && s.Peek() != "(")
  26.                     {
  27.                         outputList.Add(s.Pop());
  28.                     }
  29.                     s.Pop();
  30.                 }
  31.                 if (isOperator(c) == true)
  32.                 {
  33.                     while (s.Count != 0 && Priority(s.Peek()) >= Priority(c))
  34.                     {
  35.                         outputList.Add(s.Pop());
  36.                     }
  37.                     s.Push(c);
  38.                 }
  39.             }
  40.             while (s.Count != 0)//if any operators remain in the stack, pop all & add to output list until stack is empty
  41.             {
  42.                 outputList.Add(s.Pop());
  43.             }
  44.             for (int i = 0; i < outputList.Count; i++)
  45.             {
  46.                 Console.Write("{0}", outputList[i]);
  47.             }
  48.  
  49.             Console.ReadLine();
  50.         }
  51.         static int Priority(string c)
  52.         {
  53.             if (c == "^")
  54.             {
  55.                 return 3;
  56.             }
  57.             else if (c == "*" || c == "/")
  58.             {
  59.                 return 2;
  60.             }
  61.             else if (c == "+" || c == "-")
  62.             {
  63.                 return 1;
  64.             }
  65.             else
  66.             {
  67.                 return 0;
  68.             }
  69.         }
  70.         static bool isOperator(string c)
  71.         {
  72.             if (c == "+" || c == "-" || c == "*" || c == "/" || c == "^")
  73.             {
  74.                 return true;
  75.             }
  76.             else
  77.             {
  78.                 return false;
  79.             }
  80.         }
  81.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы