Pagini recente » Cod sursa (job #2654784) | Cod sursa (job #2567075) | Cod sursa (job #332580) | Cod sursa (job #2848679) | Cod sursa (job #359347)
Cod sursa(job #359347)
var a:array[1..100001] of char;
s:string;
i,n,k,r:longint;
f,g:text;
procedure citire;
begin
assign(f,'evaluare.in');
reset(f);
while not eof(f) do begin
read(f,s);
for i:=1 to length(s) do begin
n:=n+1;
a[n]:=s[i];
end;
end;
a[n+1]:=')';
n:=n+1;
close(f);
end;
function aduna():longint;
forward;
function factor():longint;
var r:longint;
begin
r:=0;
if a[k]='(' then begin
k:=k+1;
r:=aduna();
k:=k+1;
end else while (ord(a[k])>47) and (ord(a[k])<58) do begin
r:=r*10+ord(a[k])-48;
k:=k+1;
end;
factor:=r;
end;
function termen():longint;
var r:longint;
begin
r:=factor();
while (a[k]='*') or (a[k]='/') do begin
if a[k]='*' then begin
k:=k+1;
r:=r*factor();
end else begin
k:=k+1;
r:=trunc(r/factor());
end;
end;
termen:=r;
end;
function aduna():longint;
var r:longint;
begin
r:=termen();
while (a[k]='+') or (a[k]='-') do begin
if a[k]='+' then begin
k:=k+1;
r:=r+termen();
end else begin
k:=k+1;
r:=r-termen();
end;
end;
aduna:=r;
end;
begin
citire;
k:=1;
assign(g,'evaluare.out');
rewrite(g);
write(g,aduna());
close(g);
end.