Cod sursa(job #670442)
Utilizator | Data | 29 ianuarie 2012 11:07:28 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.96 kb |
Program evaluez_expresia;
var fi,fo : text;
i:longint;
s:array[1..100001] of char;
Function expresie:longint; forward;
Function Factor:longint;
var x:longint;
begin
x:=0;
if s[i]='(' then begin
i:=i+1;
x:=expresie;
i:=i+1;
end
else while (s[i]>='0') and (s[i]<='9') do begin
x:=x+ord(s[i])-48;
i:=i+1;
end;
factor:=x;
end;
Function Termen:longint;
var y:longint;
begin
y:=factor;
while (s[i]='*') or (s[i]='/') do if s[i]='*' then begin
i:=i+1;
y:=y*factor;
end
else begin
i:=i+1;
y:=y div factor;
end;
termen:=y;
end;
Function expresie:longint;
var z:longint;
begin
z:=termen;
while (s[i]='+') or (s[i]='-') do if s[i]='+' then begin
i:=i+1;
z:=z+termen;
end
else begin
i:=i+1;
z:=z-termen;
end;
expresie:=z;
end;
begin
assign(fi,'evaluare.in'); reset(fi); read(fi,s);
assign(fo,'evaluare.out'); rewrite(fo); i:=1;
write(fo,expresie);
close(fi); close(fo);
end.