Get Started. It's Free
or sign up with your email address
Calculator by Mind Map: Calculator

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. *