Написать программу преобразующую префиксную запись в инфиксную- C++(Си)

using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication174
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = "* 1 2 ( + 3 ( * 4 5 ) )";
            str = new Parser().ToInfix(str);
            Console.WriteLine(str);
            Console.ReadLine();
        }
 
 
    }
 
    class Parser
    {
        public string ToInfix(string str)
        {
            var parts = str.Split(' ');
            var stack = new Stack<string>();
            var first = true;
            var result = new StringBuilder();
 
            foreach(var s in parts)
            {
                switch(s)
                {
                    case "+": 
                    case "*": stack.Push(s); break;
                    case ")": stack.Pop(); result.Append(s); break;
                    case "(":
                        if (!first) result.Append(stack.Peek());
                        result.Append(s);
                        first = true;
                        break;
                    default:
                        if (!first) result.Append(stack.Peek());
                        result.Append(s);
                        first = false;
                        break;
                }
            }
 
            return result.ToString();
        }
    }
}

Leave a Comment