задача 9 урок 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

задача 9 урок 18

type
nArr = array[1..50] of integer;
sArr = array[1..50] of string;
var
s:string;
num:nArr;
znk:sArr;
i,j,sum:integer;
 procedure vvod(s:string;var num:nArr; var znk: sArr; var g: integer);
 var s1:string;
 i,j:integer;
begin
  writeln('vvedite stroku chisel i znakov:');
  //readln(s);
  s:='1*2-3*4+5*6-8';
  s1:='';
  j:=1;
  for i:=1 to length(s)+1 do
  begin
    if (s[i]>='0') and (s[i]<='9') then
      s1:=s1+s[i]  //строка цифр
    else
    begin
      val(s1,num[g]);
      inc(g);
      znk[g]:=s[i];
      inc(g);
      s1:='';
    end;
  end;
  end;
  procedure schet(var num:nArr; var znk: sArr; var g: integer);
  begin
  for i:=1 to g do
  begin
    if znk[i] = '-' then
      num[i+1]:= num[i+1] * (-1)
    else  if znk[i] = '*' then
    begin
      num[i+1]:= num[i-1] * num[i+1];
      num[i-1]:= 0;
    end;
    end;

   Sum:= 0;
 end;
procedure summa(var num:nArr; var g: integer);
begin
  for i:= 1 to j do
     Sum:= Sum +  num[i];
  Writeln(Sum);
end;
begin
  vvod(s,num, znk,j);
  schet(num, znk,j);
  summa (num,j);
  readln();
end. 
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)