Задача 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
- 764 reads