1. 2+3*3/3-1
1.1. เปลี่ยนเป็น postfix
1.1.1. rule
1.1.1.1. dictionary
1.1.1.1.1. ^ = 3
1.1.1.1.2. * , / = 2
1.1.1.1.3. + , - =1
1.1.1.2. 1.เมื่อเจอตัวเลขเอาไปเก็บใน array
1.1.1.3. 2.ถ้าเจอเครื่องหมายให้เอาไปเก็บไว้ใน stack
1.1.1.3.1. 2.1 ถ้า stack ว่างให้ push ลงไปได้เลย
1.1.1.3.2. 2.2 ถ้า stack ไม่ว่าง
1.1.2. แปลง postfix
1.1.2.1. 2+3*3/3-1
1.1.2.1.1. array
1.1.2.1.2. stack
1.2. ตรวจสอบ
1.2.1. ตัวอักษร
1.2.1.1. ถ้าค่าที่รับจากคีย์บอร์ด เป็นตัวอักษร จะไม่ให้แสดงผลใดๆออกมา
1.2.1.1.1. String input = textbox.getText(); //check int int value; try { value = Integer.parseInt(input); } catch (NumberFormatException e) { // do error } //check char if(input.length() != 1) { //do error }
1.2.2. ตัวเลขที่ติดกัน
1.2.2.1. 1. สร้างตัวแปร M เพื่อเก็บค่าที่รับมาจากคีย์บอร์ด
1.2.2.2. 2. ตรวจสอบดูว่า ค่าที่รับมารจากคีย์บอร์ดเป็นตัวเลขหรือไม่ ถ้าใช่ ให้ไปเก็ยไว้ในตัวแปร M
1.2.2.3. 3.ทำ ข้อ1. และ ข้อ2. ไปเรื่อยๆจนเจอเครื่องหมาย
1.2.2.4. 4.ใช้คำสั่ง int.parse เพื่อให้ชุดตัวเลขที่อยู่ในตัวแปร M นั้นรวมกัน
1.2.2.4.1. public class Example { public static void Main() { String s = "aaaaabbbcccccccdd"; Char charRange = 'b'; int startIndex = s.IndexOf(charRange); int endIndex = s.LastIndexOf(charRange); int length = endIndex - startIndex + 1; Console.WriteLine("{0}.Substring({1}, {2}) = {3}", s, startIndex, length, s.Substring(startIndex, length)); } }
1.2.2.5. 5.ให้ดูว่าหลังเครื่องหมายนั้นยังมีข้อมูลต่ออีกหรือไม่ ถ้ามี ให้กลับไปทำข้อ 1,2,3,4 ตามลำดับ
1.3. วิธีคำนวณ postfix
1.3.1. array
1.3.1.1. เก็บตัวเลข
1.3.2. stack
1.3.2.1. เก็บเครื่องหมาย
1.3.3. กฎการคำนวณ
1.3.3.1. ใส่ข้อมูลลงใน Queue
1.3.3.2. ถ้าเจอเครืองหมายให้นำตัวเลขจาก array สองตัวหลังมาคำนวณโดยเครื่องหมายนั้นแล้วเก็บค่าไว้ใน array
1.3.4. แทนค่า 2 3 3 * 3 / + 1 -
1.3.4.1. Queue
1.3.4.1.1. 2 3 3 * 3 / + 1 -
1.3.4.2. array
1.3.4.2.1. 2
1.3.4.3. stack
1.3.4.3.1. *