Coder Social home page Coder Social logo

infix-postfix-prefix-conversion's Introduction

Infix Postfix Prefix Conversion

ĐỒ ÁN POLISH NOTATION KIẾN TRÚC MÁY TÍNH VÀ HỢP NGỮ

Ý TƯỞNG THỰC HIỆN VÀ MÔI TRƯỜNG LẬP TRÌNH

  1. Ý tưởng thực hiện

a. Các bước giải quyết bài toán

Bước 1: Đọc từ file input ra buffer, từ buffer tách thành từng dòng.

Bước 2: Phân tích mỗi dòng thành 2 mảng: 1 mảng data[] chứa các toán tử và toán hạng và 1 mảng isOP[] có các phần tử mang giá trị 1 nếu vị trí tương trong data[] là toán từ, mang giá trị 0 nếu vị trí tương trong data[] là toán hạng.

Bước 3: Từ kết quả phân tích ở bước 2 tiến hành đọc và chuyển sang dạng hậu tố (postfix) và tiền tố (prefix).

Bước 4: Ghi kết quả ra file.

b. Thuật toán sử dụng

  • Thuật toán chuyển từ dạng trung tố sang hậu tố:

❖ Khởi động stack rỗng (Stack chứa toán tử)

❖ While (không có lỗi và chưa hết biểu thức)

o Đọc Token (Token = hằng/biến/toán tử số học /ngoặc trái/

o Nếu Token là

➢ Ngoặc trái:Push vào stack.

➢ Ngoặc phải: Pop và hiển thị các phần tử của stack đến khi gặp ngoặc trái (pop ngoặc trái nhưng không hiển thị ngoặc trái).

➢ Toán tử : Nếu stack rỗng hay Token được ưu tiên hơn phần tử ở đỉnh stack thì Push vào Stack .Ngược lại (ưu tiên bằng hoặc ít ưu tiên hơn) pop và hiển thị 1 phần tử ở đỉnh stack .Lặp lại việc so sánh Token với 1 phần tử ở đỉnh stack.

➢ Toán hạng : hiển thị nó.

❖ Khi hết biểu thức trung tố Pop và hiển thị toàn bộ stack còn lại.

  • Thuật toán chuyển từ dạng trung tố sang tiền tố:

Bước 1 : Đảo ngược biểu thức trung tố . Lưu ý : trong khi đảo ngược thì dấu ngoặc trái ‘(‘ sẽ thành ngoặc phải ‘)’ và ngược lại .

Bước 2 : Sử dụng lại thuật toán trung tố sang hậu tố ( với biểu thức trung tố là biểu thức ở bước 1 ) và tìm được biểu thức hậu tố .

Bước 3 : Đảo ngược lại biểu thức hậu tố tìm được ta sẽ có biểu thức tiền tố.

  • Thuật toán tính giá trị biểu thức hậu tố:

❖ Khởi động stack rỗng.

❖ Lặp lại các bước sau đến khi hết biểu thức:

o Đọc Token (Hằng ,biến , toán tử)

o Nếu Token là : 4*12/3+1-> 4 12 * 3 / 1

➢ Toán hạng: Push vào stack

➢ Toán tử:

• Pop 2 giá trị

• Áp dụng toán tử cho 2 giá trị lấy ra.

• Push kết quả vào stack.

Lặp đến hết biểu thức, giá trị ở đỉnh stack là giá trị của biểu thức.

  • Độ ưu tiên của các toán tử: ‘(’ < {‘+’,’-‘} < {‘*’,’/’}
  1. Môi trường lập trình

a. Ngôn ngữ lập trình: MIPS

b. IDE: Mars 4.5

infix-postfix-prefix-conversion's People

Contributors

nguyenhuugiatri avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.