Урок 17. Задача №7. Решение.

Урок 17. Задача №7.

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

<целое число><произвольное число пробелов> <арифм.операция> <произвольное число пробелов> <целое число>

Например:

1 +  3

или

2 - 12

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

type
  IntMyArr = array[1..2] of integer;

function CheckTmp(t: string; NewArr: IntMyArr): IntMyArr;
var p: integer;
begin
  if(t <> '') then
  begin
    val(t, p);
    NewArr[2] := p;
  end;
  result := NewArr;
end;

function parsingStr(s: string; var c: string; arrOther: IntMyArr): IntMyArr;
var tmp: string;
  i, k, point: integer;
  switch: boolean;
begin
  for i := 1 to length(s) do
  begin
    switch := false;
    if(s[i] >= '0') and (s[i] <= '9') then
      tmp += s[i]
    else if(s[i] = '+') or (s[i] = '-') then
    begin
      c := s[i];
      switch := true;
    end;

    if(tmp <> '') and (switch = true) then
    begin
      val(tmp, point);
      k += 1;
      arrOther[k] := point;
      tmp := '';
    end;
  end;
  arrOther := CheckTmp(tmp, arrOther);
  result := arrOther;
end;

var MathStr, sign: string;
    j: integer;
    arrNumb: IntMyArr;
begin
  writeln('Please, enter math operation for count: ');
  readln(MathStr);
  arrNumb := parsingStr(MathStr, sign, arrNumb);
  if(sign = '+') then
    writeln(arrNumb[1] + arrNumb[2])
  else
    writeln(arrNumb[1] - arrNumb[2]);

  readln(); // Удержание консоль
end.// Завершение программы