Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- val : array [0..100] of longint;
- ch : array [0..100] of char;
- mark : array [0..100] of boolean;
- s : string;
- i,j,last,n,len,pos : longint;
- ndig : set of char;
- ok : boolean;
- begin
- readln(s);
- for i := 0 to 100 do begin
- val[i] := 0;
- mark[i] := false;
- end;
- ndig := ['+','-','*','/'];
- len := length(s);
- n := 0;
- pos := 1;
- while (pos <= len) and (s[pos] >= '0') and (s[pos] <= '9') do begin
- val[n] := val[n] * 10 + ord(s[pos]) - ord('0');
- inc(pos);
- end;
- inc(n);
- while (pos <= len) do begin
- if s[pos] in ndig then begin
- ch[n] := s[pos];
- inc(pos);
- end else begin
- while (pos <= len) and (s[pos] >= '0') and (s[pos] <= '9') do begin
- val[n] := val[n] * 10 + ord(s[pos]) - ord('0');
- inc(pos);
- end;
- inc(n);
- end;
- end;
- ok := true;
- while ok do begin
- ok := false;
- for i := 1 to n - 1 do
- if (mark[i] = false) and (ch[i] in ['*','/']) then begin
- ok := true;
- mark[i] := true;
- for j := 0 to i do
- if mark[j] = false then
- last := j;
- if ch[i] = '*' then
- val[last] := val[last] * val[i]
- else if val[i] <> 0 then
- val[last] := val[last] div val[i]
- else begin
- writeln('Division by zero!!');
- halt;
- end;
- end;
- end;
- ok := true;
- while ok do begin
- ok := false;
- for i := 1 to n - 1 do
- if (mark[i] = false) and (ch[i] in ['+','-']) then begin
- ok := true;
- mark[i] := true;
- for j := 0 to i do
- if mark[j] = false then
- last := j;
- if ch[i] = '+' then
- val[last] := val[last] + val[i]
- else
- val[last] := val[last] - val[i];
- end;
- end;
- writeln(val[0]);
- // for i := 0 to n - 1 do begin
- // writeln(val[i],' ', ch[i],' ',mark[i]);
- // end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement