Pascal Урок 17 Задача 8
Primary tabs
На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2
("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть)
program U17Z8; type a=array[1..6] of integer; b=array[1..5] of char; var l:a; t:b; i,d,f,n,c,m: integer; s:string; function Sieve(s:string; var t:b; var m:integer):a; var p:integer; var w:string; begin d:=1; c:=1; p:=1; for i:= 1 to length(s) do begin if (s[i]>='0')and(s[i]<='9') then begin w:=w+s[i]; val(w,f); l[d]:=f; c:=p; end else if (s[i]<>' ') then begin t[c]:=s[i]; d:=d+1; w:=''; inc(p); end; end; m:=d; result:=l end; procedure AddSub(l:a); begin d:=1; c:=1; if (t[c]='+') then begin n:=l[d]+l[d+1]; d:=d+1; c:=c+1 end else begin n:=l[d]-l[d+1]; d:=d+1; c:=c+1; end; while (d<m) do begin if (t[c]='+') then begin n:=n+l[d+1]; c:=c+1; d:=d+1; end else begin n:=n-l[d+1]; c:=c+1; d:=d+1; end; end; writeln(n); end; begin readln(s); Sieve(s,t,m); AddSub(l); readln(); end.
- Log in to post comments
- 1121 reads