Задача 2 Алгоритмическая подготовка
Primary tabs
Решите на Паскале и/или JS Задачку №8 Урока 20, про расчет с помощью рекурсии выражений вида:
5*(3+4)-7*9+3*(2+(2-7))с помощью рекурсии.
var stroka: string;
p: integer;
function fun(a1,d1: integer; var b1: integer): integer;
begin
result:=d1+a1*b1;
b1:=1;
end;
function fun1(var i: integer; s: string): integer;
var str: string;
a,b,d,k,code: integer;
f:boolean;
begin
str:='';
b:=1;
d:=0;
k:=0;
i:=i+1;
while (i<=(length(s)+1)) do
begin
if (s[i]>='0') and (s[i]<='9') then
str:=str+s[i]
else
begin
val(str,a,code);
str:='';
if (s[i]=')') then
begin
result:=fun(a,d,b);
exit;
end
else if (s[i]='(') then
begin
a:=fun1(i,s);
i:=i+1;
end;
if (s[i]='*') then
b:=fun(a,k,b)
else if (s[i]='+') then
d:=fun(a,d,b)
else begin
d:=fun(a,d,b);
b:=b*(-1);
end;
end;
i:=i+1;
end;
result:=d;
end;
begin
writeln('vvedite posledovatelnost');
readln(stroka);
p:=0;
writeln(fun1(p,stroka));
readln();
end. - Log in to post comments
- 974 reads