Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.72 KB | None | 0 0
  1. var
  2.     val : array [0..100] of longint;
  3.     ch : array [0..100] of char;
  4.     mark : array [0..100] of boolean;
  5.     s : string;
  6.     i,j,last,n,len,pos : longint;
  7.     ndig : set of char;
  8.     ok : boolean;
  9. begin
  10.     readln(s);
  11.     for i := 0 to 100 do begin
  12.         val[i] := 0;
  13.         mark[i] := false;
  14.     end;
  15.     ndig := ['+','-','*','/'];
  16.     len := length(s);
  17.     n := 0;
  18.     pos := 1;
  19.     while (pos <= len) and (s[pos] >= '0') and (s[pos] <= '9') do begin
  20.         val[n] := val[n] * 10 + ord(s[pos]) - ord('0');
  21.         inc(pos);
  22.     end;
  23.     inc(n);
  24.     while (pos <= len) do begin
  25.         if s[pos] in ndig then begin
  26.             ch[n] := s[pos];
  27.             inc(pos);
  28.         end else begin
  29.             while (pos <= len) and (s[pos] >= '0') and (s[pos] <= '9') do begin
  30.                 val[n] := val[n] * 10 + ord(s[pos]) - ord('0');
  31.                 inc(pos);
  32.             end;
  33.             inc(n);        
  34.         end;
  35.     end;
  36.     ok := true;
  37.     while ok do begin
  38.         ok := false;
  39.         for i := 1 to n - 1 do
  40.             if (mark[i] = false) and (ch[i] in ['*','/']) then begin
  41.                 ok := true;
  42.                 mark[i] := true;
  43.                 for j := 0 to i do
  44.                     if mark[j] = false then
  45.                         last := j;
  46.                 if ch[i] = '*' then
  47.                     val[last] := val[last] * val[i]
  48.                 else if val[i] <> 0 then
  49.                     val[last] := val[last] div val[i]
  50.                 else begin
  51.                     writeln('Division by zero!!');
  52.                     halt;
  53.                 end;
  54.             end;
  55.     end;
  56.  
  57.     ok := true;
  58.     while ok do begin
  59.         ok := false;
  60.         for i := 1 to n - 1 do
  61.             if (mark[i] = false) and (ch[i] in ['+','-']) then begin
  62.                 ok := true;
  63.                 mark[i] := true;
  64.                 for j := 0 to i do
  65.                     if mark[j] = false then
  66.                         last := j;
  67.                 if ch[i] = '+' then
  68.                     val[last] := val[last] + val[i]
  69.                 else
  70.                     val[last] := val[last] - val[i];
  71.             end;
  72.     end;
  73.  
  74.    
  75.     writeln(val[0]);
  76. //  for i := 0 to n - 1 do begin
  77. //      writeln(val[i],' ', ch[i],' ',mark[i]);
  78. //  end;
  79. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement