Đại học Lê Quý Đôn - 236 Hoàng Quốc Việt - Hà Nội

Chia sẻ kiến thức mọi mặt của các lớp cao học CNTT, Học viện Kỹ thuật Quân sự




Chào mừng đã đến với forum khmt.123.st
  • Bạn chưa đăng kí (hoặc chưa đăng nhập) nên quyền lợi của bạn sẽ bị hạn chế. Việc đăng kí làm thành viên hoàn toàn miễn phí, sau khi đăngkí bạn có thể post bài, tham gia thảo luận , nhìn thấy link ở những box hạn chế ... và rất nhiều quyền lợi khác. Thủ tục đăng kí rất nhanh chóng và đơn giản, hãy Đăng kí làm thành viên !
  • Nếu bạn quên mật khẩu, xin nhấn vào đây !
  • Nếu bạn gặp trục trặc trong vấn đề đăng kí hoặc không thể đăng nhập, hãy liên hệ với chúng tôi.




  • Chuyển đến trang : Previous  1, 2

    Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 2 trong tổng số 2 trang]

    Admin

    Admin
    Quản trị viên
    Quản trị viên
    First topic message reminder :

    Đầu tiên nói về cái công cụ cần đã, sau đó sẽ làm tất cả các bài tập dạng này mà thầy ra.

    Để kiểm tra kết quả có chính xác không chỉ chuyển từ trung tố sang hậu tố và ngược lại, bạn có thể dùng một dịch vụ chuyển đổi trực tuyến cũng sẽ thực hiện tính toán giá trị của biểu thức sau khi chuyển đổi.



    Được sửa bởi Admin ngày Mon Jul 02, 2012 3:41 pm; sửa lần 1.

    https://khmt.123.st

    dacminhm

    dacminhm
    Thành viên cao cấp
    Thành viên cao cấp
    Admin đã viết:Minh hoạ cho việc tính trung tố phần giải thuật trên
    Giả sử ta cần tính M = 9 31 * (7 - (6 5)* 4 - 3*2)*2
    Đọc được theo M
    Mi
    Công việc phải làm
    S1
    S2
    Ghi chú
    99
    Đưa 9 vào S1
    9


    9

    Đưa vào S2
    9


    9 3131Đưa 31 vào S1
    9,31

    9 31 *
    *
    Đưa * vào S2
    9,31 , *

    9 31 * ((
    Đưa ( vào S2
    9,31 ,*,(

    9 31 * (7
    7
    Đưa 7 vào S1
    9,31,7
    ,*,(

    9 31 * (7 -
    -
    Đưa -vào S2
    9,31,7
    ,*,(,-

    9 31 * (7 - ((
    Đưa ( vào S2
    9,31,7
    ,*,(,-,(

    9 31 * (7 - (6
    6
    Đưa 6 vào S1
    9,31,7,6
    ,*,(,-,(
    9 31 * (7 - (6

    Đưa vào S2
    9,31,7,6 ,*,(,-,(,
    9 31 * (7 - (6 55
    Đưa 5 vào S1
    9,31,7,6,5 ,*,(,-,(,
    9 31 * (7 - (6 5))
    Lấy 5, 6 ở S1 ra và ở S2 ra, tính 6 5 đưa kết quả là 11 vào S1, lấy ( ra khỏi S2
    9,31,7,11
    ,*,(,-

    9 31 * (7 - (6 5)*
    *
    Đưa * vào S2
    9,31,7,11 ,*,(,-,*

    9 31 * (7 - (6 5)* 4
    4
    Đưa 4 vào S1
    9,31,7,11,4
    ,*,(,-,*
    9 31 * (7 - (6 5)* 4 --
    Lấy 4 và 11 ra khỏi S1, lấy * ra khỏi S2, tính 11*4, đưa kết quả 44 vào S1. Đưa dấu - vào tiếp S2
    9,31,7,44
    ,*,(,-,-
    Do dấu * trong S2 ưu tiên cao hơn dấu -
    9 31 * (7 - (6 5)* 4 - 33
    Đưa 3 vào S1
    9,31,7,44,3 ,*,(,-,-
    9 31 * (7 - (6 5)* 4 - 3**
    Đưa * vào S2
    9,31,7,44,3 ,*,(,-,-,*
    9 31 * (7 - (6 5)* 4 - 3*22
    Đưa 2 vào S19,31,7,44,3,2 ,*,(,-,-,*
    9 31 * (7 - (6 5)* 4 - 3*2))
    1.Lấy 2,3 khỏi S1 và * khỏi S2, thực hiện 3*2 đưa kết quả là 6 vào S1.
    9,31,7,44,6 ,*,(,-,-


    2. Lấy 6,44 ra khỏi S1 và - ra khỏi S2, thực hiện 44-6 đưa kết quả là 38 vào S1 9,31,7,38 ,*,(,-


    3. Lấy 38,7 ra khỏi S1 và - ra khỏi S2, thực hiện 7-38 đưa kết quả là -31 vào S1. Lấy để bỏ dấu ( ở S2
    9,31,-31
    ,*
    Lấy đến dấu ( thì dừng
    9 31 * (7 - (6 5)* 4 - 3*2)**
    Đưa dấu * vào S2
    9,31,-31 ,*,*

    9 31 * (7 - (6 5)* 4 - 3*2)*22
    Đưa 2 vào S1
    9,31,-31,2 ,*,*Hết chuỗi


    Lấy 2 và -31 khỏi S1, lấy * khỏi S2, thực hiện -31*2 đưa kết quả là -62 vào S2
    9,31,-62
    ,*



    Lấy -62 và 31 ra khỏi S1 và * ra khỏi S2, tính 31 -62 ghi kết quả -31 vào S2
    9,-31



    Lấy - 31 và 9 khỏi S1 và khỏi F2 tính 9 - 31 ghi kết quả là -22 vào S1
    -22

    Hết thao tác do chuỗi S2 rỗng


    Lấy kết quả - 22 ghi ra màn hình.



    Bạn admin khi giải bằng tay đã sai ở bước đánh dấu nên kết quả ra sai,
    Chỗ sai phải là 31*(-62) = -1922 chứ không phải là 31 (-62) = -31 như đã viết [You must be registered and logged in to see this image.]
    Thuật toán hoàn toàn đúng! Không hiểu bạn sinhmd giải thích cho ngoannhi kiểu gì hay vậy?

    dacminhm

    dacminhm
    Thành viên cao cấp
    Thành viên cao cấp
    Anh Đức Anh có thể giải (trình bày đầy đủ) đề thi năm 2011 để mọi người tham khảo được không ạ?

    huutaisc

    huutaisc
    Thành viên bắt đầu chia sẻ
    Thành viên bắt đầu chia sẻ
    Out-> -1913 có đúng ko ta (O)

    huutaisc

    huutaisc
    Thành viên bắt đầu chia sẻ
    Thành viên bắt đầu chia sẻ
    Admin đã viết:
    [You must be registered and logged in to see this image.] Chương trình viết giả mã chuyển từ trung tố sang hậu tố
    Đề bài: Cho M = Biểu thức trung tố. Viết biểu thức dạng hậu tố N, N=M.
    Ý tưởng:
    - Duyệt từng phần tử trong M cho đến hết.
    - Nếu Mi là toán hạng: nối thêm vào N.
    - Nếu là dấu mở ngoặc “(“: cho vào stack
    - Nếu là dấu đóng ngoặc “)”: lấy các toán tử trong stack ra và đưa phần lấy đó nối thêm vào N cho đến khi gặp dấu mở ngoặc “(“. (Dấu mở ngoặc cũng phải được đưa ra khỏi stack)
    - Nếu là toán tử xét các trường hợp:

    • Chừng nào ở đỉnh stack là toán tử và toán tử đó có độ ưu tiên lớn hơn hoặc bằng toán tử hiện tại thì lấy toán tử đó ra khỏi stack và nối thêm vào N.
    • Đưa toán tử hiện tại vào stack
    Khi duyệt xong chuỗi M, nếu Stack còn chưa rỗng thì lấy lần lượt ra cho đến Stack.
    Giải thuật:

    - Khởi tạo Stack rỗng: S.

    - Xây dựng hàm con xét độ ưu tiên
    UT(x)


    CASE x
    of

    *,/,%:
    UT=2

    -, + :
    UT=1

    ELSE:
    UT=0

    END

    - Bắt đầu chương trình

    FOR i:=1 to /M/



    CASE Mi of


    Toán hạng:



    N = N + Mi;

    (:




    Push(Mi, S);

    ):




    WHILE x<> "("



    N=N +x;


    Pop(S,x);


    End WHILE


    Toán tử:




    IF UT(Top(S)>=UT(Mi) THEN



    Pop(S,x);



    N=N + x;


    ELSE
    Push(Mi,S)

    End Case


    Repeat




    Pop(S,x);



    IF x <>"("
    N:=N + x

    Until Empty(S)



    Output (N)


    [You must be registered and logged in to see this link.]


    Mình sửa lại 1 tí bài của admin cho hợp lý hơn .
    srr code mình chép lên mà nó không tự thụt dòng được nên chụp hình thui . [You must be registered and logged in to see this image.]
    Ban QT
    Để thụt vào bạn dùng chữ cách (không có dấu sắc) để cách ra mỗi một tab

    Ví dụ
    Code:
              Đây là thụt một tab
                      &nbsp; Đây là thụt 2 tab
    Sẽ được:
              Đây là thụt một tab
                        Đây là thụt 2 tab

    dacminhm

    dacminhm
    Thành viên cao cấp
    Thành viên cao cấp
    Anh Đức đã viết:[You must be registered and logged in to see this image.]
    Giải thuật của Anh Đức hoàn toàn hợp lý, chính xác. Đề thi năm 2012 về cái này, K24 có ai còn thắc mắc thì xem nha

    anhtanfc10

    anhtanfc10
    Thành viên ít chịu khó
    Thành viên ít chịu khó
    Giúp e viết chương trình dựng cây nhị phân cho biểu thức trung tố không có dấu ngoặc với

    Ban QT: Đã có trong diễn đàn

    anhtanfc10

    anhtanfc10
    Thành viên ít chịu khó
    Thành viên ít chịu khó
    Em mới vào. Seach mãi trong diễn đàn cũng chỉ là tính giá trị của biểu thức trung tố không có ngoặc. Còn biểu diễn cây nhị phân cho biểu thức trung tố không đầy đủ ngoặc thì không.
    Nếu có BQT cho e xin link ~)

    dangthibay92

    dangthibay92
    Thành viên ít chịu khó
    Thành viên ít chịu khó
    anh ơi cho em xem chương trình minh họa cụ thể của bài dựng cây nhị phân cho biểu thức trung tố không đầy đủ dấu ngoặc được không ak anh

    Sponsored content


    Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 2 trong tổng số 2 trang]

    Chuyển đến trang : Previous  1, 2

    Permissions in this forum:
    Bạn không có quyền trả lời bài viết

     

    Ghi rõ nguồn khi copy các bài viết từ Website này.
    Bản quyền thuộc Khoa học Máy tính. Số lượt truy cập tính đến hiện tại:Website counter
    Modified skin by Nguyễn Anh Cường. Developed by Members of https://khmt.123.st

    Create a forum on Forumotion | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất