ใครเขียน Program C# เก่ง ๆ ช่วยผมหน่อยครับ

(โจทย์ project ของผม)
Write a program using C# convert a infix expression
to a postfix expression using stack data structure

ผมต้องเขียนโปรแกรม C# ทำการแปลงค่า infix เป็น postfix ซึ่งต้องมีเครื่องหมาย  + -*/ ^ ) (  ใช่มั้ยครับ
แล้วก็มาติดตรงที่ เครื่องหมายยกกำลัง ^ กับ เครื่องหมาย ( ) วงเล็บ ที่ทำไม่ได้

โปรแกรมผมก็เลยแปลงค่าได้แค่รูปแบบนี้ Infix : A+B*C/D-E
                                                     Postfix : ABC*D/+E-

ถ้าโปรแกรมรันผ่าน จะแปลงค่า Infix : (A+B^C)*D+E^5
                                 เป็น Postfix : A B C ^ + D * E 5 ^ + ได้แบบนี้

ตัวอย่างเว็บ Coverter Infix to postfix ที่ถูกต้องนะครับ : http://scanftree.com/Data_Structure/prefix-postfix-infix-online-converter

ใครมีความสามารถในการเขียนโปรแกรมเก่งๆ ช่วยผมด้วยนะครับ ปล. code ที่ผมทำไว้ได้ถึงแค่ + - * /
_______________________________________________________________________________
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project_Infix_to_Postfix
{
    class Program
    {
        static bool convert(ref string infix, out string postfix)
        {
            int prio = 0;
            postfix = "";

            Stack<Char> s1 = new Stack<char> ();

            for (int i = 0; i < infix.Length; i++)
            {
                char ch = infix;
                if (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')' || ch == '^')
                {
                    if (s1.Count <= 0)
                        s1.Push(ch);
                    else
                    {
                        if (s1.Peek() == '*' || s1.Peek() == '/')
                            prio = 1;
                        else
                            prio = 0;

                        if (prio == 1)
                        {
                            if (ch == '+' || ch == '-')
                            {
                                postfix += s1.Pop();
                                i--;
                            }
                            else
                            {
                                postfix += s1.Pop();
                                i--;
                            }
                        }
                        else
                        {
                            if (ch == '+' || ch == '-')
                            {
                                postfix += s1.Pop();
                                s1.Push(ch);
                            }
                            else
                                s1.Push(ch);
                        }
                    }
                }
                else
                {
                    postfix += ch;
                }
            }
            int len = s1.Count;
            for (int j = 0; j < len; j++)
                postfix += s1.Pop();
            return true;
        }
        static void Main(string[] args)
        {

            string infix = "";
            string postfix = "";

            Console.WriteLine("\n\t\t PROGRAM TO CONVERT INFIX TO POSTFIX.");
            Console.WriteLine("_______________________________________________________________________________");

            System.Console.Write("\n Enter Expression In Infix Form    : ");
            infix = Console.ReadLine();

            convert(ref infix, out postfix);
            System.Console.WriteLine("\n The Expression in Postfix Form Is : " + postfix);

            Console.ReadLine();

        }
    }
}
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่