Shunting-yard algorithm
Khi học năm thứ 3 đại học mình có tiếp xúc với lập trình android và personal project đầu tiên của mình về android là làm một ứng dụng máy tính để tính toán cộng, trừ, nhân, chia với 2 toán hạng 1 + 1 và mới đây có một người hỏi mình về việc làm một ứng dụng android giả lập một chiếc máy tính ...
Khi học năm thứ 3 đại học mình có tiếp xúc với lập trình android và personal project đầu tiên của mình về android là làm một ứng dụng máy tính để tính toán cộng, trừ, nhân, chia với 2 toán hạng
1 + 1
và mới đây có một người hỏi mình về việc làm một ứng dụng android giả lập một chiếc máy tính có thể tính toán với một biểu thức phức tạp:
10,5 * ( 9 + 3 ) - (12,456 - 8,45) / 12,4
Vấn đề sẽ chẳng có gì để nói thêm nếu chúng ta được sử dụng thử viện ngoài để giải quyết bài toán này, tuy nhiên bài toán này yêu cầu bắt buộc phải thực hiện tách các toán tử, toán hạng và thực thi theo thứ tự biểu thức toán học (Thực hiện biểu thức trong ngoặc > nhân, chia > cộng, trừ) Mình có thử một vài cách như dùng binary tree hay Shunting-yard algorithm và mình nhận thấy việc dùng Shunting-yard algorithm dễ cài đặt hơn