Chuyển biểu thức dạng trung tố ra dạng hậu tố tương ứng

43 1.9K 7
Chuyển biểu thức dạng trung tố ra dạng hậu tố tương ứng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chuyển biểu thức dạng trung tố ra dạng hậu tố tương ứng

Mục lục Mục lục I Giới thiệu đề tài: .2 1.2 ”KÝ PHÁP NGHỊCH ĐẢO BA LAN PHƯƠNG PHÁP TÍNH GIÁ TRỊ BIỂU THỨC TOÁN HỌC” 1.2.1 Các phương pháp biểu diễn phép toán hai ngôi: 1.2.2 Cây biểu diễn biểu thức 1.2.3 Thế ký pháp nghịch đảo Ba Lan? II Cấu trúc liệu: III Thuật toán bản: IV Mở rộng đề tài: VI Kết chương trình: .40 VII Kết luận: 41 VIII Nhận xét giáo viên hướng dẫn: 42 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh I Giới thiệu đề tài: 1.1 Tên đề tài: Chuyển biểu thức dạng trung tố dạng hậu tố tương ứng 1.2 ”KÝ PHÁP NGHỊCH ĐẢO BA LAN PHƯƠNG PHÁP TÍNH GIÁ TRỊ BIỂU THỨC TOÁN HỌC” Khi lập trình, tính giá trị biểu thức toán học điều bình thường Tuy nhiên, nhiều ứng dụng (như chương trình vẽ đồ thị hàm số chẳng hạn, chương trình cho phép người dùng nhập vào hàm số), ta cần phải tính giá trị biểu thức nhập vào từ bàn phím dạng chuỗi Với biểu thức toán học đơn giản (như a+b) bạn tự làm phương pháp tách chuỗi “thủ công” Nhưng để “giải quyết” biểu thức có dấu ngoặc, ví dụ (a+b)*c + (d+e)*f , phương pháp tách chuỗi đơn giản không khả thi Trong tình này, ta phải dùng đến Ký Pháp Nghịch Đảo Ba Lan (Reserve Polish Notation – RPN), thuật toán “kinh điển” lĩnh vực trình biên dịch Để đơn giản cho việc minh họa, ta giả định chuỗi biểu thức mà ta nhận từ bàn phím bao gồm: dấu mở ngoặc/đóng ngoặc; toán tử cộng, trừ, nhân chia (+, -, *, /); toán hạng số nguyên từ đến 9; khoảng trắng ký tự 1.2.1 Các phương pháp biểu diễn phép toán hai ngôi: Một phép toán hai tập hợp X ánh xạ f: X×X →X cho (a,b) f(a,b) A Ánh xạ f thường ký hiệu *, gọi toán tử, phần tử a, b gọi hạng tử (còn gọi toán hạng) Khi viết biểu thức biểu diễn phép toán ta đặt ký hiệu toán tử trước, sau toán hạng (là biến hằng) Thông thường biểu thức đại số học, ta viết kí hiệu phép toán hai hạng tử( trung tố) Ví dụ : a +b, a * b, Khi biểu thức có nhiều phép toán, ta dùng cặp dấu ngoặc "(", ")" thứ tự ưu tiên phép toán để rõ thứ tự thực phép toán (Các phép toán quy phép toán ngôi.) Ta viết hai hạng tử trước kí hiệu toán tử sau (hậu tố) Chẳng hạn: a + b viết a b +, a*b viết a b * Cũng viết toán tử trước, hai toán hạng sau( tiền tố) Chẳng hạn: SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang:  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh a + b viết + a b, a * b viết * a b 1.2.2 Cây biểu diễn biểu thức Dùng biểu diễn biểu thức thấy rõ trình tự tính toán biểu thức Ví dụ: a*(b+c)-d^5 Được thực theo sơ đồ biểu diễn nhị phân sau: / \ * ^ / \ /\ a + d / \ b c Ta mô tả trình đọc, ghi nhận giá trị thực phép tính, giống trình duyệt biểu thức theo thứ tự sau: Đọc ghi nhận giá trị biến a(con trái) Đọc ghi nhận loại phép toán * (con trái) Đọc giá trị biến b (con trái) Đọc ghi nhận loại phép toán + (con phải) Đọc giá trị biến c (con phải) thực phép cộng b+c=x ghi nhận kết x,thực phép nhân a*x = y ghi nhận kết y Đọc ghi nhận phép toán Đọc giá trị biến d Đọc ghi nhận phép toán ^ Đọc giá trị thực phép lũy thừa z=d^5, thực phép trừ k=y-z Để đơn giản ta giả sử phép toán hai Khi biểu thức nhị phân đầy đủ Quy tắc thực phép toán sau: • Hoặc duyệt theo thứ tự lần duyệt phải tính giá trị thực phép tính quy định toán tử ghi đỉnh cha Viết đỉnh duyệt theo thứ tự ta có dãy / \ * ^ / \ /\ a +d / \ SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06 / \ + ^ /\ /\ * c d / \  Trang:  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao b c a GVHD: Phan Thanh b a * b + c - d ^ (1) Theo cách này, duyệt đỉnh Nếu bên trái (biến hằng) ghi nhận giá trị biến Nếu toán tử lưu dạng toán tử Nếu phải thực phép tính theo toán tử lưu đỉnh cha giá trị lưu phải giá trị đọc trái, ghi kết vào đỉnh cha • Hoặc duyệt biểu thức theo thứ tự sau: Mỗi đỉnh duyệt sau hai đỉnh duyệt Khi duyệt đỉnh ta thực toán tử ghi đỉnh với giá trị hai đỉnh Thứ tự duyệt đỉnh là: a b c + * d ^ - (2) Khi duyệt theo thứ tự sau, việc thực phép tính tiến hành theo quy tắc: Mỗi thăm đỉnh thì: Nếu ghi nhận giá trị biến Nếu đỉnh thực toán tử ghi đỉnh vào giá trị ghi hai đỉnh con, ghi kết vào đỉnh Với dãy (1) không dùng đến dấu ngoặc, có hai biểu thức khác cho dãy đỉnh duyệt thứ tự Còn với dãy (2) với lưu ý biến biểu diễn lá, toán tử biểu diễn nút trong, từ dãy dạng (2) ta dựng lại biểu thức theo giải thuật sau: Khi độ dài dãy lớn 1, duyệt từ bên trái sang, gặp phần tử toán tử, lấy hai phần tử đứng trước khỏi dãy chuyển thành hai phần tử (theo thứ tự) Vì biểu thức viết dãy (2) hoàn toàn xác định 1.2.3 Thế ký pháp nghịch đảo Ba Lan? Cách trình bày biểu thức theo cách thông thường tự nhiên với người lại “khó chịu” máy tính cách tường minh trình tính toán để đưa giá trị biểu thức Để đơn giản hóa trình tính toán này, ta phải biến đổi lại biểu thức thông thường dạng hậu tố - postfix (cách gọi ngắn thuật ngữ ký pháp nghịch đảo Ba Lan) Để phân biệt hai dạng biểu diễn biểu thức, ta gọi cách biểu diễn biểu thức theo cách thông thường trung tố - infix (vì toán tử nằm hai toán hạng) Ký pháp nghịch đảo Ba Lan phát minh vào khoảng thập kỷ 1950 Charles Hamblin - triết học gia khoa học gia máy tính người Úc - dựa theo công trình ký pháp Ba Lan nhà Toán học người Ba Lan Jan Łukasiewicz Hamblin trình SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang:  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh bày nghiên cứu hội nghị khoa học vào tháng năm 1957 thức công bố vào năm 1962 Từ tên hậu tố bạn đoán phần theo cách biểu diễn này, toán tử đặt sau toán hạng Cụ thể biểu thức trung tố: 4+5 biểu diễn lại thành + II Cấu trúc liệu: Ta xây dựng kiểu cấu trúc toantu theo kiểu stack (ngăn xếp) gồm trường: + Trường tt kiểu char để chứa toán tử hàm + Trường next kiểu trỏ cấu trúc toantu đến phần tử struct toantu { char tt; toantu *next; }; Kiểu cấu trúc thứ hai hauto theo kiểu danh sách liên kết đơn gồm: + Trường letter kiểu mảng kí tự để chứa kí hiệu toán hạng, toán tử , hàm + Trường value kiểu double để chứa giá trị thực toán hạng + Trường next kiểu trỏ cấu trúc hauto để đến phần tử struct hauto { char letter[10]; double value; hauto *next; }; typedef toantu *stack; typedef hauto *list; stack S; list P; III Thuật toán bản: Chuyển đổi từ trung tố sang hậu tố Thuật toán chuyển đổi phát minh vị giáo sư người Đức tiếng Edsger Dijkstra (cũng tác giả thuật toán tìm đường ngắn đặt theo tên ông semaphore, kỹ thuật để đồng tiến trình lập trình đa nhiệm) Thuật toán dựa theo chế ngăn xếp Ý tưởng chung thuật toán duyệt biểu thức từ trái sang phải: Nếu gặp toán hạng (con số ) ghi vào chuỗi kết (chuỗi kết biểu thức trung tố) Nếu gặp dấu mở ngoặc, đưa vào stack SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang:  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh - Nếu gặp toán tử (gọi o1 ), thực hai bước sau: * Chừng có toán tử o2 đỉnh ngăn xếp Và độ ưu tiên o1 nhỏ hay độ ưu tiên o2 lấy o2 khỏi ngăn xếp ghi vào kết * Push o1 vào ngăn xếp Nếu gặp dấu đóng ngoặc lấy toán tử ngăn xếp ghi vào kết lấy dấu mở ngoặc khỏi ngăn xếp Khi duyệt hết biểu thức trung tố, lấy tất toán tử (nếu có) từ ngăn xếp ghi vào chuỗi kết Để dễ hiểu, bạn quan sát trình thực thi thuật toán qua ví dụ cụ thể sau: Biểu thức cần chuyển đổi: 3+4*2/(1-5) Kí tự + * / ( ) * Thao tác Ghi vào hậu tố Push + vào stack Ghi vào hậu tố Push * vào stack Ghi vào hậu tố Lấy * khỏi stack, ghi vào kết quả, push / vào stack Push ( vào stack Ghi vào hậu tố Push – vào stack Ghi vào hậu tố Pop lấy ( , ghi toán tử pop hậu tố Pop tất cá toán tử khỏi ngăn xếp ghi vào hậu tố Stack + + +* +* +/ Chuỗi hậu tố 3 34 34 342 342* +/( +/( +/(+/(+/ 342* 342*1 342*1 342*15 342*15342*16-/+ Hàm khởi tạo cho stack S list P: void create(); * Hàm kiểm tra stack rỗng: * Hàm đẩy toán tử vào stack S: * Hàm lấy phần tử đỉnh stack đồng thời xoá phần tử đó khỏi stack: * Hàm xem phần tử đỉnh stack không xoá phần tử đó: int empty(); void push(char x) char pop(); char top(); * Hàm chèn phần tử vào cuối danh sách list P: void insert_last(char *x,double val); * Hàm kiểm tra độ ưu tiên toán tử: int ref(char x) SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh { if ( ( x == '+')|| ( x =='-')) return 1; else if ( ( x == '*')|| ( x== '/')) return 2; else if (x=='(' || x==')' ) return else return -1; } * Hàm kiểm soát kí tự nhập vào int test(char x) { if ((x>='0')&&(x=0; l ) { temp1[m]=temp[l]; m++; } temp1[m]='\0'; if ( strcmpi(temp1,"pi") ==0 ) ok=0; else if ( strcmpi(temp1,"sin") ==0 ) ok=1; else if ( strcmpi(temp1,"cos") ==0 ) ok=1; else if ( strcmpi(temp1,"tg") ==0 ) ok=1; else if ( strcmpi(temp1,"cotg")==0 ) ok=1; else if ( strcmpi(temp1,"ln") ==0 ) ok=1; else if ( strcmpi(temp1,"lg") ==0 ) ok=1; else if ( strcmpi(temp1,"sqrt")==0 ) ok=1; else if ( strcmpi(temp1,"exp") ==0 ) ok=1; else if ( strcmpi(temp1,"asin")==0 ) ok=1; else if ( strcmpi(temp1,"acos")==0 ) ok=1; else if ( strcmpi(temp1,"atan")==0 ) ok=1; } } return ok; } * Hàm chuyển biểu thức trung tố sang hậu tố có mở rộng void convert(char *expr) { SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 10  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh if ( exp[l]=='%') return 0; } while ( exp[i]==' ' && ix; T=T->next; delete(cur); } return x; } /* -*/ void calculate() { double x1,x2,s; int ok=1; hauto *cur; T=NULL; cur=P; while(cur!=NULL) { if ( strcmp(cur->letter,"#")==0) { x1=pop_T(); cur=cur->next; if ( strcmp(cur->letter,"-")==0) { s=0-x1; push_T(s); } else if (strcmp(cur->letter,"+")==0) { push_T(x1); } SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 35 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh } else if(strcmp(cur->letter,"+")==0) { x2=pop_T(); x1=pop_T(); s=x1+x2; push_T(s); } else if(strcmp(cur->letter,"-")==0) { x2=pop_T(); x1=pop_T(); s=x1-x2; push_T(s); } else if(strcmp(cur->letter,"*")==0) { x2=pop_T(); x1=pop_T(); s=x1*x2; push_T(s); } else if(strcmp(cur->letter,"/")==0) { x2=pop_T(); if(x2!=0) { x1=pop_T(); s=x1/x2; push_T(s); } else { ok=0; break; } } else if(strcmp(cur->letter,"%")==0) { x2=pop_T(); if ( x2==0) { ok=0; break; } else { x1=pop_T(); SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 36  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh s=(int)x1%(int)x2; push_T(s); } } else if(strcmp(cur->letter,"^")==0) { x2=pop_T(); x1=pop_T(); if ( x2==0&&x1==0) { ok=0; break; } else { s=pow(x1,x2); push_T(s); } } else if(strcmp(cur->letter,"!")==0) { x1=pop_T(); if(x1letter,"sin")==0) { x1=pop_T(); s=sin(x1); push_T(s); } else if(strcmp(cur->letter,"cos")==0) { x1=pop_T(); s=cos(x1); push_T(s); } else if(strcmp(cur->letter,"tg")==0) { x1=pop_T(); SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 37 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh if ( cos (x1) ==0 ) { ok=0; break; } else { s=tan(x1); push_T(s); } } else if(strcmp(cur->letter,"cotg")==0) { x1=pop_T(); if ( sin (x1) ==0) { ok=0; break; } else { s=1.0/tan(x1); push_T(s); } } else if(strcmp(cur->letter,"ln")==0) { x1=pop_T(); if( x1 >0) { s=log(x1); push_T(s); } else { ok=0; break; } } else if(strcmp(cur->letter,"lg")==0) { x1=pop_T(); if( x1 >0) { s=log10(x1); push_T(s); } else SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 38 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh { ok=0; break; } } else if(strcmp(cur->letter,"sqrt")==0) { x1=pop_T(); if ( x1 letter,"exp")==0) { x1=pop_T(); s=exp(x1); push_T(s); } else if(strcmp(cur->letter,"asin")==0) { x1=pop_T(); s=asin(x1); push_T(s); } else if(strcmp(cur->letter,"acos")==0) { x1=pop_T(); s=acos(x1); push_T(s); } else if(strcmp(cur->letter,"atan")==0) { x1=pop_T(); s=atan(x1); push_T(s); } else push_T(cur->value); cur=cur->next; } textcolor(3); if (ok) cprintf("%.3lf",pop_T()); SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 39  ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao GVHD: Phan Thanh else cprintf(" Bieu thuc sai( kq) "); return; } /***********************END**********************/ /*************************************************/ VI Kết chương trình: Giao điện chương trình: SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 40 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh VII Kết luận: Đề tài giải việc chuyển biểu thức từ trung tố sang hậu tố với thuật toán đơn giản, dễ hiểu Đồng thời mở rộng thêm nhiều theo chúng tôi, thiếu sót việc kiểm tra điều kiện ràng buộc, trường hợp đặc biệt khác SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 41 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh Để làm dễ nhìn đẹp mắt, có sử dụng thêm đồ hoạ văn VIII Nhận xét giáo viên hướng dẫn: SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 42 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 43 [...]... 06  Trang: 12 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh i++; } if(!empty()) { while(S!=NULL) { temp[0]=pop(); menu_list(temp[0]); }; } return; } Phần tiếp theo sau đây, chúng tôi muốn mở rộng ra việc kiểm tra một biểu thức có đúng chưa, và nếu đã đúng rồi thì hãy tính biểu thức đó + Hàm kiểm tra test_bt( exp) thực hiện kiểm tra biểu thức vào có đúng không, một số trường hợp biểu thức sai... số trường hợp biểu thức sai trong quá trình tính toán làm cho điều kiện của một biểu thức bị vi phạm ( 5 / (2-2) làm cho mẫu số của biểu thức bằng 0=> biểu thức sai, và điều này sẽ được kiểm tra trong quá trình tính toán ở hàm calculate( ) ở phần sau)và hàm sẽ trả về giá trị 1 nếu biểu thức đúng và trả về 0 nếu biểu thức sai Ví dụ: 2++ , ( ), 2 322 , 2.3! , sin 5+/ 1, (2+5)/2+(2 , 2^*3 , int test_bt(... 09T2 - Nhóm: 06  Trang: 15 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh + Các hàm sau đây thực hiện nhiệm vụ tính toán một biểu thức: Quá trình tính toán giá trị của biểu thức hậu tố khá tự nhiên đối với máy tính Ý tưởng là đọc biểu thức từ trái sang phải, nếu gặp một toán hạng (con số hoặc biến) thì push toán hạng này vào ngăn xếp; nếu gặp toán tử, lấy hai toán hạng ra khỏi ngăn xếp (stack),... toán hạng ra khỏi ngăn xếp (stack), tính kết quả, đẩy kết quả trở lại ngăn xếp Khi quá trình kết thúc thì con số cuối cùng còn lại trong ngăn xếp chính là giá trị của biểu thức đó * Xây dựng ngăn xếp tính kết quả từ biểu thức hậu tố nêu trên struct tinh { double x; tinh *next; }; tinh *T; long giaithua(int n) { if(n==0||n==1) return 1; else return n*giaithua(n-1); } * Hàm thực hiện việc đẩy phần... T=new_ele; } return; } * Hàm đọc ra một phần tử trên đỉnh stack T: double pop_T() { tinh *cur; double x; if(T==NULL) return 0; else { cur=T; x=T->x; T=T->next; SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 16 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh delete(cur); } return x; } * Hàm thực hiện tính toán và trong hàm này cũng kèm theo việc kiểm tra biểu thức tránh trường hợp suy biến do... lấy lại giá trị trong danh sách liên kết B Khi xét một xâu vào thì chúng ta có thể xảy ra biến đã được khai báo hoặc chưa được khai báo, tuỳ trường hợp mà ta đưa ra các thông báo khác nhau cho người dùng V Viết chương trình: #include #include SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 21 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh #include #include ... cprintf(" Bieu thuc sai( kq) "); return; } Đề tài này có thể mở rộng hơn nữa trong việc xử lý biến Ở đây chúng tôi xin nêu ra hướng giải quyết đối với trường hợp này thôi Khi một dãy kí tự vừa số mà không phải các số, toán tử, cũng không phải hàm , hay hằng số (pi) thì ta thực hiện việc kiểm tra một kí tự tiếp theo có phải là kí tự ‘=’ không, nếu đúng ta thực hiện lưu giá trị này vào một danh sách liên kết... 20, 16 , 40 , 5, 2); write_string(" DO AN CAU TRUC DU LIEU & THUAT TOAN ", 23,4 , 11); write_string(" De tai 07: ",23, 10 ,11); write_string(" Chuyen bieu thuc trung to sang hau to ",22, 12 ,11); SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 24 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh write_string(" GVHD : Phan Thanh Tao",23, 17 ,11); write_string(" NHOM : 09NH06",23, 18 ,11); write_string("... push_T(s); } else if(strcmp(cur->letter,"-")==0) { x2=pop_T(); x1=pop_T(); s=x1-x2; push_T(s); } else if(strcmp(cur->letter,"*")==0) { x2=pop_T(); x1=pop_T(); SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 17 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh s=x1*x2; push_T(s); } else if(strcmp(cur->letter,"/")==0) { x2=pop_T(); if(x2!=0) { x1=pop_T(); s=x1/x2; push_T(s); } else { ok=0; break; } } else... s=(int)x1%(int)x2; push_T(s); } } else if(strcmp(cur->letter,"^")==0) { x2=pop_T(); x1=pop_T(); if ( x2==0&&x1==0) { ok=0; break; } else { s=pow(x1,x2); push_T(s); } } SVTH: Trịnh Việt Hùng Lớp 09T2 - Nhóm: 06  Trang: 18 ĐỒ ÁN CẤU TRÚC DỮ LIỆU Tao  GVHD: Phan Thanh else if(strcmp(cur->letter,"!")==0) { x1=pop_T(); if(x1letter,"sin")==0) ... 1.1 Tên đề tài: Chuyển biểu thức dạng trung tố dạng hậu tố tương ứng 1.2 ”KÝ PHÁP NGHỊCH ĐẢO BA LAN PHƯƠNG PHÁP TÍNH GIÁ TRỊ BIỂU THỨC TOÁN HỌC” Khi lập trình, tính giá trị biểu thức toán học điều... giải chuyển biểu thức từ dạng trung tố sang hậu tố toán tử +,- ,*, / số có chữ số Trong phần mở rộng nói mở rộng bao gồm số thực ( số có nhiều sô), hàm mũ, sin, cos, tg, ln , việc kiểm tra biểu thức. .. kiểm tra biểu thức có chưa, tính biểu thức đó + Hàm kiểm tra test_bt( exp) thực kiểm tra biểu thức vào có không, số trường hợp biểu thức sai trình tính toán làm cho điều kiện biểu thức bị vi

Ngày đăng: 18/11/2015, 16:02

Từ khóa liên quan

Mục lục

  • Mục lục

  • I. Giới thiệu về đề tài:

    • 1.2. ”KÝ PHÁP NGHỊCH ĐẢO BA LAN PHƯƠNG PHÁP TÍNH GIÁ TRỊ BIỂU THỨC TOÁN HỌC”

    • 1.2.1. Các phương pháp biểu diễn phép toán hai ngôi:

    • 1.2.2. Cây biểu diễn biểu thức

    •  1.2.3. Thế nào là ký pháp nghịch đảo Ba Lan?

    • II. Cấu trúc dữ liệu:

    • III. Thuật toán cơ bản:

    • IV. Mở rộng đề tài:

    • VI. Kết quả chương trình:

    • VII. Kết luận:

    • VIII. Nhận xét của giáo viên hướng dẫn:

Tài liệu cùng người dùng

Tài liệu liên quan