Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Bài toán tính giá trị biểu thức
MIỄN PHÍ
Số trang
3
Kích thước
91.4 KB
Định dạng
PDF
Lượt xem
1694

Bài toán tính giá trị biểu thức

Nội dung xem thử

Mô tả chi tiết

Cách khác để tính giá trị của một biểu thức

Quắch Nguyễn

Tính giá trị của một biểu thức là một bài toán không khó. Có nhiều cách để giải quyết bài

toán này chẳn hạn như: đưa biểu thức số học theo ký pháp hậu tố và tiền tố, hoặc đưa về

dạng cây biểu thức…Tuy nhiên ở đây tôi muốn đưa ra một phương pháp giải khác với

những phương pháp trên nhằm mục đích để cho các bạn đọc gần xa tham khảo thêm và

cũng rất mong nhận được ý kiến phản hồi của bạn đọc gần xa.

Phương pháp giải

1. Biểu thức chỉ là một số thực thì giá trị của biểu (gtbt) thức bằng chính số đó

2. Biểu thức chỉ chứa phép toán '*' thì gtbt = gtbt(trước phép nhân đầu tiên ) * gtbt(dãy sau

phép nhân đầu tiên)

3. Biểu thức có chứa 2 phép toán '+, *' thì gtbt = gtbt(dãy trước dấu cộng đầu tiên)+

gtbt(dãy sau dấu cộng đầu tiên)

function gtbt(s:string):real;

begin

if isnumber(s) then gtbt:=strtonumber(s)

else

if all_mull_ope(s) then tinh:=gtbt(head(s,’*’))*gtbt(tail(s,’*’))

else

gtbt:=gtbt(head(s,’+’))+ gtbt(tail(s,’+’));

end;

4. Biểu thức có chứa 3 phép toán '+ , −, *'trong trường họp này ta chèn thêm dấu '+' vào

trước những dấu '−' (ngoại trừ dấu ' −' đứng tại ví trí thứ 1 : s1=’ −’ ) sau đó vẫn tính như

(3)

5. Biểu thức có chứa 4 phép toán ' +, −, *, /' tương tự như (4) và chèn thêm dấu ' *' trước

những dấu ' /' sau đó tính như (3).

Các hàm:

Function Isnumber(s:string):boolean; {hàm này trả về giá trị đúng nếu s là một số }

var r:real; code:word;

begin

val(s,r,code); Isnumber:=(code=0)or (s[1]=’/’);

end;

Function Strtonumber(s:string):real; {hàm này trả về một số tương ứng với s hoặc 1/s nếu

s[1] =’/’ }

var r:real; code:word;

begin

val(s,r,code);

if code 0 then

begin val(copy(s,2,length(s)-1),r,code); r:=1/r; end;

Strtonumber:=r;

Tải ngay đi em, còn do dự, trời tối mất!