Задача 12 Урок 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Как решать: Посчитайте результат за одно прочтение строки, без использования массивов (в нашем курсе решение в таком стиле для этой задачки было впервые добавлено участником slavina036).
var s:string; i,l,j,a,b,c,h,m:integer; x:array[1..17] of string; begin 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 begin j+=1; x[j]:=s[i]; j+=1; end; end; i:=j; val(x[1],a,l); j:=3; While j<=i do begin h:=2; val(x[j],b,l); if x[j+1]='*' then begin m:=j+1; while x[m]='*' do begin val(x[m+1],c,l); b:=b*c; m+=2; h+=2; end; end; case x[j-1] of '+':a+=b; '-':a-=b; '*':a*=b; end; j+=h; end; write(a); readln(); end.
- Log in to post comments
- 537 reads
drl
Tue, 09/24/2024 - 10:51
Permalink
var l,x,i,k,d,a,b,c: integer;