Đạ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.




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

    Admin

    Admin
    Quản trị viên
    Quản trị viên
    Giải thuật chuyển hậu tố thành trung tố có đầy đủ dấu ngoặc
    Ý tưởng:
    1. Duyệt cho đến hết M
    a. Đọc một phàn tử x
    b. Nếu x là toán hạng thì nạp vào stack
    c. Nếu x là toán tử thì:
    Thành lập một chuỗi mô tả phép tính: (A x B) trong đó: Toán hạng 1 là A, Toán tử là x và toán hạng 2 là B. Dựa trên nguyên tắc:
    - Toán hạng có thể là một giá trị số.
    - Toán hạng là một chuỗi biểu thức mà bắt đầu bằng các dấu mở ngoặc đến các con số, toán tử và kết thúc bằng các dấu đóng ngoặc (Số ngoặc mở = với số ngoặc đóng).
    - Nếu phần tử trên đỉnh stack là các dấu đóng ngoặc thì: Lấy hết các dấu đóng ngoặc tương ứng, đến các toán hạng, toán tử đến đủ số lượng dấu mở ngoặc tương ứng, nạp vào chuỗi cho toán hạng thứ tương ứng.
    - Sau khi thành lập xong chuỗi, push chuỗi đó lần lượt vào stack.
    Khi kết thúc chuỗi M, pop từng phần tử trong stack ra và đưa vào chuỗi, viết ra màn hình.
    [You must be registered and logged in to see this image.]



    Được sửa bởi Admin ngày Sun Jul 03, 2011 9:59 pm; sửa lần 2.

    https://khmt.123.st

    Admin

    Admin
    Quản trị viên
    Quản trị viên
    Giải thuật:
    - Xác định chuỗi M đúng cú pháp, có thể thực hiện được.
    - Khởi tạo Stack rỗng. Chuỗi N rỗng.
    CASE Mi of
    For i:=1 to /M/




    CASE Mi of



    Toán hạng:





    Push (Mi, S)



    Toán tử:

    'Thành lập toán hạng thứ 2



    CASE Top(S) of




    Toán hạng:
    Pop(S, B)



    Dấu đóng
    ngoặc:








    While (Top(S)<> Dấu mở ngoặc) AND DemDauNgoac <>0 Do




    Pop (S,x);




    B:= x B;




    IF Dấu ngoặc là đóng
    THEN




    DemDauNgoac=DemDauNgoac +1



    IF Dấu ngoặc là mở THEN




    DemDauNgoac=DemDauNgoac-1



    'Thành lập tiếp toán hạng thứ nhất



    CASE Top(S) of



    Toán hạng:Pop(S, A)


    Dấu đóng ngoặc:









    While (Top(S)<> Dấu mở ngoặc) AND DemDauNgoac <>0 Do



    Pop (S,x);



    A:= x A;




    IF Dấu ngoặc là đóng
    THEN




    DemDauNgoac=DemDauNgoac +1



    IF Dấu ngoặc là mở THEN




    DemDauNgoac=DemDauNgoac-1



    'Thành lập công thức




    N:=(A Mi B);
    'N chứa cả 2 dấu ngoặc 2 đầu



    For j: = 1 to /N/




    Push (S, Nj);

    'Lấy từng
    phần tử
    ra


    While
    NOTEmpty(S)Do




    Pop(S,x)




    N:=x N;




    Output (N).

    https://khmt.123.st

    sangminh2009

    sangminh2009
    Thành viên chưa phát huy chia sẻ
    Thành viên chưa  phát huy chia sẻ
    các anh chị xem lại giúp là chuyển từ trung tố sang hậu tố hay la hậu tố sang trung tố?
    Vì ở đây sẽ có hai thủ tục khác nhau mà?
    Thanks
    BQT:
    1. Đề nghị đọc và hiểu đầu bài (đọc khoảng 20 lần sẽ nhớ đầu bài, phần tiêu đề)
    2. Khi nhớ rồi, đọc thuật toán sẽ hiểu là thuật toán chuyển.

    3. Chuyển trung tố sang hậu tố đã giải quyết ở Topic khác
    [You must be registered and logged in to see this image.] [You must be registered and logged in to see this link.]

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

    crtoranghi

    crtoranghi
    Thành viên ít chịu khó
    Thành viên ít chịu khó
    Biểu thức M cho ở dạng trung tố không đầy đủ dấu ngoặc, viết thủ tục chuyển M sang dạng hậu tố?

    Anh chị nào biết thì xin chỉ giáo.

    Ban QT: Đề nghị đọc hoặc search trước khi hỏi. Đường Link đã để sẵn ở ngay phần trên, nhưng bạn này không chịu nháy vào vẫn cứ hỏi, lạ thật.
    3. Chuyển trung tố sang hậu tố đã giải quyết ở Topic khác
    [You must be registered and logged in to see this image.] [You must be registered and logged in to see this link.]

    tch23987

    tch23987
    Thành viên ít chịu khó
    Thành viên ít chịu khó
    anh chị nào có thể đưa ra 1 ví dụ cụ thể cho đề tài này đc ko ạ.
    xin cảm ơn. [You must be registered and logged in to see this image.]

    Ban QT: Ví dụ chuyển 1 2 + 3 * sẽ chuyển thành ((1 + 2) * 3)

    Sponsored content


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

    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

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