Глава 17.Задача №7.Напишите программу, которая вычисляет результат приложения (сделать поддержку операций сложения и вычитания

Задача №7 из главы 17

На вход вашей программы подается строка вида:

1
<целоечисло><произвольное число пробелов> <арифм.операция> <произвольное число пробелов> <целоечисло>
например:
1 +  3
или
2 - 12

Напишите программу, которая разбирает вычисляет результат этого приложения (сделайте поддержку операций сложения и вычитания).

program pascal_17_7;
type a =  array [1..2] of integer; //секция обьвления типов
type b =  array [1..1] of string;
 
{процедура заполения массивов по ссылке }
procedure filling_arrays( var arr_numb : a; var arr_s : b; s : string );
var j, i, l, int, code : integer;
    symb, acc_string : string; 
begin
  j := 1;
  i := 0;
  l := 0;
  while( j <= length( s ) )do 
  begin
    symb := s[j];
    acc_string := '';
    while( symb >= '0' ) and ( symb <= '9' ) do
    begin     
        acc_string += symb; // в переменную накапливаем символы
        j += 1; // увеличиваем индекс 
        if ( j <= length( s ) ) then //если не вышли за длинну строки
            symb := s[j] // символ равен увеличенному символу строки 
        else
            break;
    end;
    if( acc_string <> '' ) then //если переменная не пуста
    begin
        i += 1; // индекс первого массива
        val( acc_string, int, code ); // преобразование в число
        arr_numb[i] := int;
    end;
    if( symb = '+' ) or ( symb = '-' ) then // если в строке есть соответствующие символы
    begin
       l += 1; // индекс второго массива
       arr_s[l] := symb;
    end;
  j += 1; // при каждом проходе увеличиваем индекс
  end; 
end;

{ процедура вывода выражения }
procedure conclusion_expression( arr_numb : a; arr_s : b ); 
var total, i : integer;
begin
  total := 0;
  for i := 1 to high( arr_s ) do // обходим массив с символами
  begin
      if( arr_s[i] = '+' ) then
         total += arr_numb[i] + arr_numb[i+1]
      else
         total += arr_numb[i] - arr_numb[i+1];
  end;
  writeln( total ); // вывод результата
end;
    
var arr_number : a;
    arr_sign : b;
    str : string;
begin // начало основной программы
  writeln( 'input string: ' );
  readln( str );
  filling_arrays( arr_number, arr_sign, str ); // вызов процедуры
  conclusion_expression( arr_number, arr_sign ); // вызов процедуры
end. // завершение основной программы
vedro-compota's picture

решение засчитано

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