30/09/2018, 18:43
Xin ý tưởng so sánh 2 biểu thức boolean
Đề: Nhập vào 2 biểu thức boolean và so sánh xem 2 biểu thức đó có bằng nhau không. ví dụ:
F1 = A*B + A*C
F2 = X*Y*Z + X*Z + Y
Viết chương trình so sánh F1 == F2 không
Mình có ý tưởng là dựa vào bảng chân trị nhưng không biết làm như thế nào??
Bài liên quan
Mình nghĩ muốn so sánh 2 biểu thức boolen thì phải tính giá trị của biểu thức 2 vế ra rồi so sánh thôi (Tìm bảng chân trị 2 vế như bạn nói ấy)
Dùng vòng lặp để tính giá trị biểu thức rồi lưu giá trị vào mảng kết quả, bao nhiêu biến thì bấy nhiêu vòng lặp (Chắc chuối).
Sau đó so sánh 2 mảng kết quả.
Ví dụ tính f1 = AB + AC ( hoặc hình như là (A and B) || (A and C) thì phải, cái này m quên mất rồi)
Dùng vòng lặp:
Nhưng cách trên có 2 cái cần giải quyết là
Quan trọng là chỗ tính biểu thức ấy bạn ơi, làm thế nào để bạn có được
(i && j) || (i && k );
Bạn thử tìm hiểu về kí pháp nghịch đảo balan xem, mình cũng góp ý vậy chứ chưa làm.
Làm sao để thay giá trị i,j,k lần lượt cho A,B,C khi tính toán??
it nhất cũng phải có quy ước nhập biểu thức chứ nhập biến bắng chữ lung tung sao dc, ví dụ nhập theo x1,x2,x3,x4…
từ đó gán vào các i j k rồi tính.
Hoặc nếu biết trước số biến rồi thì tốt hơn. Thường thì làm việc với mấy biểu thức 4 biến trở xuông thôi chứ nhiều biến thì phức tạp quá
Bạn tham khao cái này, mình mới làm buỏi sáng. code thực hiện nhập 1 biểu thức bool 3 biến (dài loằng ngoằng cũng được miễn là 3 biến) , sau đó đưa ra bảng chân trị.
Trong đó có sử dụng kí pháp ngịch đảo balan để chuyển biểu thức sang dạng hậu tố.
Biểu thức nhập vào ở dạng đơn giản nhất tức chỉ có các biến A,B,C,( không co phủ định) và các toán tử + * () Nhưng dựa vào đó có thể phát triển ra như:
Nói chung nghĩ đển mấy cái trên đã ớn rồi, Bạn tìm hiểu thêm vậy.
Cảm ơn bạn nhiều nhe!