Задача 11 Урок 18
Primary tabs
Задана последовательность символов, имеющая следующий вид: p1q1p2q2p3...qn–1pn , где pi — число, а qi — знак арифметического действия из набора {+, –, *}. Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики.
Входные данные: На вход программе подается строка указанного вида, состоящая не более чем из 9 чисел, разделенных символами арифметических операций.
Выходные данные: Выведите значение арифметического выражения.Примеры:
Входные данные Результат
5+2 7
1-2*5+2 -7
5*6+7-3*2+11 42
5*6+7-3*2*3+11 30Как решать: Выделите массив операций и массив значений, сначала посчитайте все умножения, а потом все остальное
var s:string; i,j,l,h:integer; znak:array [1..8] of char; chsl:array [1..9] of integer; x:array [1..9] of string; a:array [1..9] of integer; begin h:=0; readln(s); j:=1; for i:=1 to length(s) do begin if (s[i]>='0')and (s[i]<='9')then x[j]:=x[j]+s[i] else if s[i]<>' ' then begin znak[j]:=s[i]; j+=1; end; end; for j:=1 to high(x) do begin val(x[j],a[j],l); if znak[j-1]= '*' then begin h+=1; a[j-h]:=a[j]*a[j-h]; a[j]:=0; end else h:=0; end; for j:=2 to high(x) do if(znak[j-1]='-') then a[j]:=a[j-1]-a[j] else a[j]:=a[j-1]+a[j]; write('=',a[j]); readln(); end.
- Log in to post comments
- 305 reads