Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Mời tài trợ sinh nhật diễn đàn 8 năm

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Đăng ký tham gia offline VN-Zoom 8 năm tại HCM

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tuyển chuyên viên tin tức

Tuyển BQT VN-Zoom
Trang 1/2 1 2 cuốicuối
kết quả từ 1 tới 15 trên 28
  1. #1
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default Pascal. Nhập vào biểu thức hậu tố và tính giá trị của biểu thức đó.

    mong mấy sư huynh, tỷ muội giúp em bài này với. Đề là nhập vào 1 biẻu thức hậu tố (mối số hạng và toán tử cách nhau bởi dấu cách) hãy tính giá trị biểu thức hậu tố đó.
    Cách thức chuyển đổi từ hậu tố sang giá trị thì em cũng rõ đôi chút do ông thầy giảng trên lớp nhưng có mấy cai hàm gán .... thì ông ko dạy kỹ nên em cũng mơ màng. Em đã lục lọi trên mạng 2,3 hôm nay rùi mà đọc mãi ko hiểu câu lệnh vì thế ko thể nào làm được bài tập trên. Vì thế anh chị nào có bài tương tự cho em xin tham khảo với, nếu ai code bài tập trên giúp em vơi thi em Thank You nhiều nhiều. Đệ mới nhập môn mong mấy huynh tỷ chiếu cố.

    ---------- Bài thêm lúc 22:05 ---------- Bài trước là lúc 21:25 ----------

    ai chỉ em với.

    ---------- Bài thêm lúc 22:10 ---------- Bài trước là lúc 22:05 ----------

    ai chỉ giúp em với nờ

  2. Có 2 thành viên cảm ơn luckyluke76215 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  3. #2
    auauau97's Avatar
    auauau97 vẫn chưa có mặt trong diễn đàn Rìu Chiến Vàng
    Tham gia
    Jun 2010
    Đến từ
    Hà Nội
    Bài
    6.667
    Cảm ơn
    11.927
    Điểm
    5.255/3.016 bài viết
    VR power
    0

    Default

    Bạn thử ví dụ xem nào, đọc đề mình cùi quá nên không hiểu mấy.
    Bạn thử ví dụ cho mình khi bạn nhập thử 1 hậu tố và đưa kết quả ra màn hình.
    Nothing is true, everything is permitted

  4. Có 2 thành viên cảm ơn auauau97 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  5. #3
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default

    ví dụ khi nhập vào biêu thức hậu tố ví dụ 12 23 + thì in ra kết quả là 35.
    nhập 23 34 56 + - in ra kết quả là -67

  6. Có 2 thành viên cảm ơn luckyluke76215 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  7. #4
    auauau97's Avatar
    auauau97 vẫn chưa có mặt trong diễn đàn Rìu Chiến Vàng
    Tham gia
    Jun 2010
    Đến từ
    Hà Nội
    Bài
    6.667
    Cảm ơn
    11.927
    Điểm
    5.255/3.016 bài viết
    VR power
    0

    Default

    Trích luckyluke76215 View Post
    ví dụ khi nhập vào biêu thức hậu tố ví dụ 12 23 + thì in ra kết quả là 35.
    nhập 23 34 56 + - in ra kết quả là -67
    Thế nhập hậu tố 12 23 + thì tính 12+23=35 à
    Với cả nhập hậu tố 23 34 56 + - thì tính cái gì mà ra -67 vậy bạn ?
    Nothing is true, everything is permitted

  8. Có 2 thành viên cảm ơn auauau97 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  9. #5
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default

    Tính hậu tố = - 67
    Thay đổi nội dung bởi luckyluke76215; 24-05-2011 lúc 17:05. Lý do: Bỏ sung

  10. Có 2 thành viên cảm ơn luckyluke76215 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  11. #6
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.777
    Cảm ơn
    1.540
    Điểm
    4.122/2.748 bài viết
    VR power
    0

    Default

    Trích auauau97 View Post
    Thế nhập hậu tố 12 23 + thì tính 12+23=35 à
    Với cả nhập hậu tố 23 34 56 + - thì tính cái gì mà ra -67 vậy bạn ?
    Biểu thức hậu tố là các toán tử đứng bên phải toán hạng mà nó ảnh hưởng đến,
    23 34 56 + -
    = 23 (34 56 +) -
    = 23 - (34 56 +)
    = 23 - (34 + 56)
    = -67

    đó là chuyển từ hậu tố về trung tố

    Với bài này thì bạn chủ top search trên mạng và tham khảo về stack để làm

  12. Có 3 thành viên cảm ơn Tung_Huynh cho bài viết này:
    auauau97 (24-05-2011), kien_coi_1997 (26-05-2011), NorbertWiener (19-07-2013)

  13. #7
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default

    em search 3,4 hôm nay rồi mà mãi vẫn chưa làm được. Em hết đường mới vô nhờ ạ. Trên mạng mỗi bài mỗi kếu với lại em mới nhập môn nên đọc câu lệnh còn mập mờ vì thế làm được như bài tập thì khó quá. Anh nào có tài liệu hay code bài tương tự cho em xin với. Nếu giải thích thêm thi tốt quá.

    ---------- Bài thêm lúc 16:56 ---------- Bài trước là lúc 16:49 ----------

    cách chuyển = tay thì em bít nhưng mà chuyển = câu lênh pascal thì em còn mập mờ do mới học à. Ý tưởng chuyển = pascal là: nhập 1 biều thức hậu tố ví dụ 23 34 56 + - mối phần tử cách nhau bởi dấu cách. Chương trình sẽ đi qua các phần tử và cho vào stack. Khi đọc stack thì chương trình đọc từ trái sang phải khi gặp 1 toán hạng ( như + - * /, ở ví dụ trên là phép + gặp đàu tiên.) chương trình sẽ lấy ra hai phần tử trong stack gần phép toán tử nhất và thực hiên phép toán đó với độ ưu tiên là sô hạng nằm dưới stack + số hạng nằm trên stack ( 34 + 56 = 90) và cho số hạng 90 đó vào lại stack và chưong trình tiếp tục chạy lại từ đầu. Kết quả cuối cùng là 23 - 90 = - 67. Và xuất kết quả cuói cùng ra màn hình.

    ---------- Bài thêm lúc 17:22 ---------- Bài trước là lúc 16:56 ----------


    em gửi cái hình ảnh về chuyên từ hâu tố sang giá trị mong máy anh chị chỉ giúp em với, ai có code tương tự cho em xin tham khảo với,nếu có kèm giải thích thì em xin THANKS. ANh nào làm giúp thì em chân thành cảm ơn.
    Thay đổi nội dung bởi luckyluke76215; 24-05-2011 lúc 17:28.

  14. Có 2 thành viên cảm ơn luckyluke76215 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  15. #8
    auauau97's Avatar
    auauau97 vẫn chưa có mặt trong diễn đàn Rìu Chiến Vàng
    Tham gia
    Jun 2010
    Đến từ
    Hà Nội
    Bài
    6.667
    Cảm ơn
    11.927
    Điểm
    5.255/3.016 bài viết
    VR power
    0

    Default

    Cái này mình chưa học nên không giúp được bạn rồi.
    Sorry
    Nothing is true, everything is permitted

  16. Có 2 thành viên cảm ơn auauau97 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  17. #9
    don't let go's Avatar
    don't let go vẫn chưa có mặt trong diễn đàn Thành viên đang bị kỷ luật
    Tham gia
    Sep 2009
    Bài
    204
    Cảm ơn
    42
    Điểm
    129/61 bài viết
    VR power
    0

    Default

    bài này nhập dưới dạng xâu phải không??.. nếu phải mình sẽ viết chương trình cho bạn !!! thân

  18. Có 3 thành viên cảm ơn don't let go cho bài viết này:
    kien_coi_1997 (26-05-2011), luckyluke76215 (25-05-2011), win 8 (25-05-2011)

  19. #10
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default

    nhập vào xâu ạ. Em thank anh trước.

  20. Có 2 thành viên cảm ơn luckyluke76215 cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  21. #11
    don't let go's Avatar
    don't let go vẫn chưa có mặt trong diễn đàn Thành viên đang bị kỷ luật
    Tham gia
    Sep 2009
    Bài
    204
    Cảm ơn
    42
    Điểm
    129/61 bài viết
    VR power
    0

    Default

    đây là một bài có thuật toán dễ hiểu nhưng cài đặt rất hay

  22. Có 2 thành viên cảm ơn don't let go cho bài viết này:
    kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  23. #12
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.117
    Cảm ơn
    693
    Điểm
    1.251/559 bài viết
    VR power
    0

    Default

    Này bạn ơi, bạn chuyển về trung tố sau đó áp dụng cái procedure của mình đi:
    Code:
    http://www.vn-zoom.com/f174/tu-lam-mot-cai-may-tinh-bang-pascal-x-901852.html
    Code:
    {$A-,B-,D+,E+,F-,G+,I-,L-,N-,O-,P-,Q-,R-,S-,T-,V-,X+,Y-}
    {$M 1024,0,655360}
    
    program Calculator;
    uses sysutils;
    const
      Sign=['+','_','*','/','^'];
      Minus=['-'];
      Num=['0'..'9',',','E'];
      Bracket=['(',')','[',']','{','}'];
      BrOpen=['(','[','{'];
      BrClose=[')',']','}'];
    
    function LoadInfo(var inp:string; var CP,NP:Int64;
                                        var CS,CV,NS,NV:string):boolean;
    var p:Int64;
    begin
    p:=1;
    
    {Load Current Value}
      if inp[p] in Minus then
      begin CV:=CV+inp[p]; inc(p); end;
        repeat
      if inp[p] in Num then CV:=CV+inp[p]
        else break; inc(p);
      if p>length(inp) then begin CP:=p; NP:=p; exit; end;
      until false;
    
    {Load Current Sign}
        if inp[p] in BrClose then
      begin CS:=CS+inp[p]; inc(p); end
      else
      repeat
      if inp[p] in Sign then CS:=CS+inp[p]
        else break; inc(p); until false;
    
    CP:=p; {Current Position}
    
    {Load Next Value}
        if inp[p] in Minus then
      begin NV:=NV+inp[p]; inc(p); end;
        if p>length(inp) then exit;
        repeat
      if inp[p] in Num then NV:=NV+inp[p]
      else if inp[p] in BrOpen then NS:=NS+inp[p]
        else break; inc(p);
      if p>length(inp) then begin NP:=p; exit; end;
      until false;
    
    {Load Next Sign}
    if NS='' then
      repeat
      if inp[p] in Sign then NS:=NS+inp[p]
        else break; inc(p); until false;
    
    NP:=p; {Next Position}
    
    end;
    
    function DoFirst(s1,s2:string):boolean;
    var r1,r2:Int64;
    begin
      if (s1='+') or (s1='_') then r1:=1
      else if (s1='*') or (s1='/') then r1:=2
      else if (s1='^') then r1:=3
      else r1:=0;
    
      if (s2='+') or (s2='_') then r2:=1
      else if (s2='*') or (s2='/') then r2:=2
      else if (s2='^') then r2:=4
      else r2:=0;
    
      if r1>=r2 then exit(true)
      else exit(false);
    end;
    
    function IsNum(s:string):boolean;
    var i,j:integer;
    begin
    for i:=1 to length(s) do
    if s[i] in Sign then exit(false)
    else if s[i] in Minus then Break;
    for j:=i+1 to length(s) do
    if not(s[j] in Num) then exit(false);
    exit(true);
    end;
    
    function DelBr(S:string):string;
    var i,j:integer;
    begin
    j:=0;
    for i:=1 to length(s) do
    if S[i]in BrOpen then inc(j)
    else if S[i] in BrClose then dec(j);
    if j>0 then S:=S+Stringofchar(')',j);
    
    for i:=1 to length(S) do
    if S[i] in BrOpen then
    for j:=i to length(S) do
    if S[j] in BrClose then
    if IsNum(copy(S,i+1,j-i-1)) then
    begin delete(S,j,1); delete(S,i,1); break; end;
    exit(S);
    end;
    
    function Step(CV,CS,NV:string):string;
    var CVN,NVN:extended;
    begin
        CVN:=StrToFloat(CV); NVN:=StrToFloat(NV);
      if CS='+' then exit(FormatFloat('#,##0.#;;',CVN+NVN));
      if CS='_' then exit(FormatFloat('#,##0.#;;',CVN-NVN));
      if CS='*' then exit(FormatFloat('#,##0.#;;',CVN*NVN));
      if CS='/' then exit(FormatFloat('#,##0.#;;',CVN/NVN));
      if CS='^' then exit(FormatFloat('#,##0.#;;',exp(ln(CVN)*NVN)));
        exit(CV);
    end;
    
    function Simply(Inp:string):string;
    var CP,NP:Int64; CL,CS,CV,NS,NV:string;
    begin CL:='';
    repeat
      CP:=0;NP:=0;CS:='';CV:='';NS:='';NV:='';
        if Inp='' then exit(CL)
      else LoadInfo(Inp,CP,NP,CS,CV,NS,NV);
      if (CS[1] in BrClose) and (CS<>'') then
        begin CL:=CL+CV+CS+NS; delete(Inp,1,CP); continue; end;
      if (NS[1] in BrOpen) and (NS<>'') then
        begin CL:=CL+CV+CS+NS; delete(Inp,1,CP); continue; end;
        if CS='' then exit(CL+Inp);
      if not DoFirst(CS,NS) then
        begin CL:=CL+CV+CS; delete(Inp,1,CP-1); end
        else Inp:=Step(CV,CS,NV)+NS+copy(Inp,NP,length(Inp));
    until false;
    end;
    
    function replace(SO,SN:string; var s:string):Int64;
    var p,c:Int64;
    begin
    c:=0;
    repeat
    p:=pos(SO,S);
    if p=0 then exit(c)
    else inc(c);
    delete(S,p,length(SO));
    insert(SN,S,p);
    until false;
    end;
    
    function Correct(s:string):string;
    var i:Integer; kq:string;
    begin
    kq:='';
    for i:=1 to length(s) do
    if s[i] in Num+Sign+Bracket+Minus then kq:=kq+s[i];
    s:=kq;
    repeat until
    Replace('++','+',S)+
    Replace('+_','_',S)+
    Replace('_+','_',S)+
    Replace('__','+',S)=0;
    exit(s);
    end;
    
    function GetRand:string;
    const sign='+-*/()';
    var s:string; i:Int64;
    begin
    randomize; s:='';
    repeat
    s:=s+IntToStr(random(100)+1)+sign[random(5)+1];
    until (length(s)=random(200)) or (length(s)>50);
    exit(s+IntToStr(random(100)));
    end;
    
    procedure Init(var S:string);
    var i:Integer;
    begin
    DecimalSeparator :=',';
    ThousandSeparator:='.';
    writeln('Nhap bieu thuc can tinh: ');
    readln(S);
    //S:=GetRand;
    if S[1] in Sign then insert('0',S,1);
    
    for i:=1 to length(S) do
    if (S[i]in BrOpen) and (S[i-1] in Num+BrClose)
    then insert('*',S,i);
    for i:=1 to length(S) do
    if (S[i]in BrClose) and (S[i+1] in Num)
    then insert('*',S,i+1);
    
    Replace('-','_',S);
    Replace('(_','(-',S);
    if S[1]='_' then S[1]:='-';
    Replace('.',',',S);
    S:=Correct(S);
    writeln('=',S);
    end;
    
    procedure Calc(NewV:string);
    var inp,oldV:string;
    begin
    newV:=Correct(NewV);
    newV:=DelBr(NewV);
    repeat
    oldV:=newV;
    newV:=Simply(NewV);
    newV:=Correct(NewV);
    newV:=DelBr(NewV);
    writeln('=',NewV);
    until OldV=NewV;
    end;
    
    var Inp:string;
    BEGIN
    Init(Inp);
    Calc(Inp);
    readln;
    END.
    Tức là bây giờ, ta sẽ viết là:
    BEGIN
    ..
    readln(Inp);
    ..
    HauTo2TrungTo(Inp);
    ..
    Calc(Inp);
    ..
    END.
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  24. Có 3 thành viên cảm ơn kien_coi_1997 cho bài viết này:
    btn1995 (26-05-2011), luckyluke76215 (25-05-2011), win 8 (25-05-2011)

  25. #13
    luckyluke76215's Avatar
    luckyluke76215 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Jan 2009
    Đến từ
    T T Hue
    Bài
    21
    Cảm ơn
    8
    Điểm
    20/13 bài viết
    VR power
    0

    Default

    Thank sư huynh kien...., thiêt ra cái procedure trên quá sức xử lý của em, em mới học nên cũng muốn mấy sư huynh cho em 1 bài đơn giản dễ hiếu( các hàm và thử tục viết bằng tiếng việt không dấu thì em Thank cực kỳ). Thuật toán thì em trình bày ở trên nhưng giải thuật ai giúp đỡ em với, càng dễ hiểu càng tốt. Sư huynh don't let go giúp em 1 tay với. Thank nhiều

  26. Có 3 thành viên cảm ơn luckyluke76215 cho bài viết này:
    btn1995 (26-05-2011), kien_coi_1997 (26-05-2011), win 8 (25-05-2011)

  27. #14
    don't let go's Avatar
    don't let go vẫn chưa có mặt trong diễn đàn Thành viên đang bị kỷ luật
    Tham gia
    Sep 2009
    Bài
    204
    Cảm ơn
    42
    Điểm
    129/61 bài viết
    VR power
    0

    Default

    Đây là code mình viết bạn xem thế nào nhé :
    đây là topic Chuyên về pascal và C++ của mình bạn vào ủng hộ mình nhé
    trong đó mình đã viết giải thuật và có đầy đủ các lệnh trong pascal nhất là về xâu kí tự
    Code:
    program thongtin_hnsv_com;
    var a:array[0..250] of char;
    s:string;
    dem:byte;
    kq:integer;
    procedure nhap;
    begin
    write('nhap xau S=');
    readln(s);
    end;
    procedure xuli;
    var j,i:byte;
    code,tkq:integer;
    ls:string;
    kt:boolean;
    begin
    dem:=0;
    a[0]:='+';
    for i:=1 to length(s) do
    if (s[i]='+') or (s[i]='-') then
    begin
    inc(dem);
    a[dem]:=s[i];
    end;
    delete(s,length(s)-2*dem+1,dem*2);
    i:=0;
    kq:=0;
    while i<=dem do
    begin
    kt:=false;
    for j:=length(s) downto 1 do
    if s[j]=' ' then
    begin
    kt:=true;
    break;
    end;
    if kt then ls:=copy(s,j+1,length(s)-j)
    else ls:=copy(s,j,length(s));
    val(ls,tkq,code);
    if a[i]='+' then kq:=kq+tkq
    else kq:=tkq-kq;
    delete(s,j,length(s)-j+1);
    inc(i);
    end;
    end;
    procedure xuat;
    begin
    write('kq tinh duoc la :',kq);
    end;
    begin
    nhap;
    xuli;
    xuat;
    readln;
    end.
    Thay đổi nội dung bởi don't let go; 25-05-2011 lúc 12:42.

  28. Có 6 thành viên cảm ơn don't let go cho bài viết này:
    auauau97 (26-05-2011), btn1995 (26-05-2011), kien_coi_1997 (26-05-2011), luckyluke76215 (25-05-2011), win 8 (25-05-2011), zoom_2011 (29-03-2012)

  29. #15
    Đam mê lập trình's Avatar
    Đam mê lập trình vẫn chưa có mặt trong diễn đàn Thành viên đang bị kỷ luật
    Tham gia
    May 2011
    Đến từ
    Trên núi
    Bài
    428
    Cảm ơn
    433
    Điểm
    627/248 bài viết
    VR power
    0

    Default

    Code:
            #include <stdio.h>
    002	#include <conio.h>
    003	 
    004	#define MAX 100
    005	 
    006	#define PLUS     0 /* Dau cong */
    007	#define MINUS    1 /* Dau tru */
    008	#define MULTIPLE 2 /* Dau nhan */
    009	#define DIVIDE   3 /* Dau chia */
    010	#define LPAREN   4 /* Dau mo ngoac don */
    011	#define RPAREN   5 /* Dau dong ngoac don */
    012	 
    013	int top;
    014	 
    015	struct {
    016	int toantu;
    017	} stack[MAX];
    018	 
    019	void push (int tt)
    020	{
    021	if (top < MAX-1)
    022	stack[++top].toantu = tt;
    023	}
    024	 
    025	int isempty()
    026	{
    027	return top == -1;
    028	}
    029	 
    030	int pop (int *tt)
    031	{
    032	if (!isempty())
    033	{
    034	*tt = stack[top--].toantu;
    035	return 1;
    036	}
    037	return 0;
    038	}
    039	 
    040	int get (int *tt)
    041	{
    042	if (!isempty())
    043	{
    044	*tt = stack[top].toantu;
    045	return 1;
    046	}
    047	return 0;
    048	}
    049	 
    050	void xet(int tt)
    051	{
    052	char chuoi[] = "+-*/";
    053	int uutien[] = {0,0,1,1,-1,-1};
    054	int toantu, done = 0, val;
    055	 
    056	if (isempty())
    057	push(tt);
    058	else
    059	{
    060	do {
    061	if (get(&toantu))
    062	{
    063	if (uutien[tt] <= uutien[toantu])
    064	{
    065	pop(&toantu);
    066	printf("%c ", chuoi[toantu]);
    067	}
    068	else
    069	{
    070	push(tt);
    071	done = 1;
    072	}
    073	}
    074	else
    075	{
    076	done = 1;
    077	push(tt);
    078	}
    079	} while (!done);
    080	}
    081	}
    082	 
    083	void in_hauto(char *expr)
    084	{
    085	int len, i=0, ttu, done;
    086	char c, chuoi[]="+-*/";
    087	top = -1;
    088	len = strlen(expr);
    089	do {
    090	c = expr[i++];
    091	while (c == ' ' && i < len-1)
    092	c = expr[i++];
    093	switch (c)
    094	{
    095	case '0' :
    096	case '1' :
    097	case '2' :
    098	case '3' :
    099	case '4' :
    100	case '5' :
    101	case '6' :
    102	case '7' :
    103	case '8' :
    104	case '9' : printf("%c ", c); break;
    105	case '+' : xet(PLUS); break;
    106	case '-' : xet(MINUS); break;
    107	case '*' : xet(MULTIPLE); break;
    108	case '/' : xet(DIVIDE); break;
    109	case '(' : push(LPAREN); break;
    110	case ')' : done = 0;
    111	do {
    112	if (isempty())
    113	{
    114	done = 1;
    115	printf("\n\nError\n");
    116	}
    117	else
    118	{
    119	pop(&ttu);
    120	if (ttu != LPAREN)
    121	printf("%c ", chuoi[ttu]);
    122	else
    123	done = 1;
    124	}
    125	} while (!done);
    126	break;
    127	}
    128	} while (i < len);
    129	while (!isempty())
    130	{
    131	pop(&ttu);
    132	printf("%c ", chuoi[ttu]);
    133	}
    134	}
    135	 
    136	void main()
    137	{
    138	char expr[50];
    139	int done = 0;
    140	 
    141	printf("\nChuong trinh in bieu thuc hau to tuong ung voi mot bieu thuc"
    142	"trung to hop le"
    143	"\nChu y :"
    144	"\nCac toan hang chi tu 0 den 9"
    145	"\nCac toan tu chi gom + - * / ( )\n");
    146	do {
    147	printf("\nNhap mot bieu thuc trung to hop le (trong de thoat): ");
    148	gets(expr);
    149	if (strlen(expr) > 0)
    150	in_hauto(expr);
    151	else
    152	done = 1;
    153	} while (!done);
    154	}
    khuyến mãi cho bạn thêm 1 bài chuyển biểu thức trung tố về hậu tố .

  30. Có 7 thành viên cảm ơn Đam mê lập trình cho bài viết này:
    auauau97 (26-05-2011), btn1995 (26-05-2011), kien_coi_1997 (26-05-2011), luckyluke76215 (25-05-2011), turbo pascal (01-06-2011), win 8 (25-05-2011), zoom_2011 (29-03-2012)

 

 
Trang 1/2 1 2 cuốicuối

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •