Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Calulator por Mind Map: Calulator

1. Postfix

1.1. Rule

1.1.1. 1. หากเป็นตัวเลขให้ Push ลง Stack

1.1.2. 2.หากเป็นเครื่องหมาย ให้ Pop A และ Pop B จากนั้นคำนวณตามเครื่องหมาย เช่น B+A

1.2. จากการแปลงเป็น Postfix ได้เป็น 21 3 4 * + 5 -

1.3. ลองทำ (DO)

1.3.1. Stack

1.3.1.1. 21

1.3.1.1.1. 3

2. ความรู้เพิ่มเติม

2.1. ใช้ในการแยกข้อความ

2.2. string input = "One TwoThree"; int startPosition = input.IndexOf(" ") + 1; string sub =input.Substring(startPosition ,3); MessageBox.Show(sub);

2.2.1. O = ตัวที่ 0 || n เท่ากับตัวที่ 1 || ไปเรื่อยๆ

2.2.2. ความหมายของโค๊ด คือ เริ่มจากตัวที่ ตัวข้างหลังช่องว่างเอามา 3 ตัว คือ เอาตัวที่ 1 2 และ 3 มา จะได้ Two

3. ตั้งโจทย์ 21+3*4-5

3.1. กฏ (Rule)

3.1.1. น้ำหนัก Operator

3.1.1.1. + , - = 0

3.1.1.2. * , / = 1

3.1.2. ใช้ try catch ในการตรวจสอบ

3.1.2.1. 1. try { Int.Parse(); } ได้ แสดงว่าเป็น ตัวเลข

3.1.2.2. 2. Catch error แสดงว่าไม่ใช่ตัวเลข

3.1.3. 1.ตรวจสอบ หากพบเป็นตัวเลข ให้...

3.1.3.1. 1.1 หากเป็นตัวเลข แล้วตัวต่อไปเป็นเครื่องหมาย ให้ Push ตัวเลข ลง Array ได้เลย

3.1.3.2. 1.2 หากเป็นตัวเลข แล้วตัวต่อไปเป็นตัวเลข ให้ รวมกับตัวเลขตัวแรกก่อน แล้วจึง Push ตัวเลข ลง Array

3.1.3.3. 1.3 รวมตัวเลขไปเรื่อยๆ จนกว่าตัวต่อไปจะเป็นเครื่องหมาย

3.1.4. 2.หากเป็นOperator ให้...

3.1.4.1. 1.หาก Stack ว่าง ให้ Push ลง Stack

3.1.4.2. 2.หากไม่ว่าง ให้ตรวจสอบน้ำหนัก

3.1.4.2.1. 2.1 ถ้า Operator ตัวใหม่ที่จะ push ลง stack มีค่าน้อยกว่าหรือเท่ากับ Operator ตัวที่อยู่ใน stack ก่อนหน้านี้ ให้ pop Operator ตัวก่อนหน้านี้ออก แล้ว push Operator ตัวใหม่ลงไปแทนที่

3.1.4.2.2. 2.2 ถ้า Operator ตัวใหม่มีค่ามากกว่า Operator ตัวก่อนหน้านี้ ก็ push Operator ตัวใหม่ลงไปได้เลย ส่วน Operator ตัวก่อนหน้านี้ก็อยู่คงเดิม

3.2. Change to Postfix

3.2.1. Array

3.2.1.1. เข้าก่อน ออกก่อน

3.2.2. Stack

3.2.2.1. เข้าทีหลังออกก่อน

3.2.2.1.1. Stack Stacks = new Stack(); Stacks.Push("Hello"); Stacks.Push("World"); String texts = Stacks.Pop();

3.2.3. จากโจทย์ แยกได้เป็น 2,1,+,3,*,4,-,5

3.2.3.1. Array

3.2.3.1.1. 21

3.2.3.2. Stack

3.2.3.2.1. +

3.2.3.3. ผลลัพธ์ เท่ากับ 28