Thứ Tư, 10 tháng 7, 2019

Tính giá trị biểu thức 3

Cho trước một xâu chứa biểu thức chỉ có phép cộng, trừ, nhân, chia và các số nguyên dương tối đa 5 chữ số. Hãy viết chương trình tính giá trị của biểu thức trên. 
Kết quả đầu ra lấy gần đúng 2 chữ số thập phân.

Xem clip hướng dẫn

1 nhận xét:

  1. program o;
    uses crt;
    function laso(s:string):boolean;
    var a,b:integer;
    begin
    val(s,a,b);
    if b=1 then
    begin
    delete(s,1,1);
    val(s,a,b);
    end;
    exit(b=0);
    end;
    function so(s:string):real;
    var b:longint; a:real;
    begin
    val(s,a,b);
    if b=1 then
    begin
    delete(s,1,1);
    val(s,a,b);
    a:=1/a
    end;
    exit(a);
    end;
    function daun(s:string):string;
    begin
    exit(copy(s,1,pos('x',s)-1));
    end;
    function cuoin(s:string):string;
    begin
    exit(copy(s,pos('x',s)+1,length(s)-pos('x',s)));
    end;
    function dau(s:string):string;
    begin
    exit(copy(s,1,pos('+',s)-1));
    end;
    function cuoi(s:string):string;
    begin
    exit(copy(s,pos('+',s)+1,length(s)-pos('+',s)));
    end;
    function cong(s:string):boolean;
    begin
    exit(pos('+',s)>0);
    end;
    function daut(s:string):string;
    begin
    while pos('-',s)>0 do
    s[pos('-',s)]:='@';
    while pos('@',s)>0 do
    begin
    insert('-',s,pos('@',s)+1);
    s[pos('@',s)]:='+';
    end;
    exit(s);
    end;
    function dauch(s:string):string;
    begin
    while pos(':',s)>0 do
    s[pos(':',s)]:='@';
    while pos('@',s)>0 do
    begin
    insert(':',s,pos('@',s)+1);
    s[pos('@',s)]:='x';
    end;
    exit(s);
    end;
    function tinh(s:string):real;
    begin
    if laso(s) then tinh:=so(s) else
    if cong(s) then tinh:=tinh(dau(s))+tinh(cuoi(s)) else
    tinh:=tinh(daun(s))*tinh(cuoin(s));
    end;
    begin
    clrscr;
    write (tinh(dauch(daut('1+2+3x3:9'))):0:2);
    readln;
    end.

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất