Задача 11 Урок 18

Задача 11 Урок 18

Задана последовательность символов, имеющая следующий вид: 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.