Предмет: Информатика, автор: СтарыйМатематик

Напишите программу в синтаксисе Free Pascal или Turbo Pascal, которая вычисляет выражение, состоящее из чисел и знаков (допускаются только знаки «+» или «–», количество чисел и знаков не ограничено). Выражение вводится как символьная строка, все числа целые.
ввод:
12+42-44-12-13+1-23
вывод: -37

ввод:
12-53-2+23+0-25
вывод -45

Ответы

Автор ответа: Аноним
1
Var
  S, chislo: string;
  i,A,B,C,E: integer;
Begin
  B := 0;
  WriteLn('Введите выражение: ');
  ReadLn(S);
  i := S.length;
  While (i > 0) do
  begin
    Case S[i] of
      '+':
        begin
          val(chislo,A,E);
          B := B + A;
          chislo := '';
        end;
      '-':
        begin
          val(chislo,A,E);
          B := B - A;
          chislo := '';
        end;
      else
        chislo := S[i] + chislo;
    End;
    i := i - 1;
  end;
  if (chislo <> '') then
  begin
    val(chislo,A,E);
    B := B + A;
  end;
  WriteLn(B);
End.

СтарыйМатематик: А не могли бы вы обьяснить принцип работы алгоритма, а то я его не совсем понимаю.
Аноним: Начиная с конца строки, считываем число в строку chislo , доходим до знака - преобразовываем строку с числом в integer, записываем результат в A и прибавляем A к B, (или отнимаем). После цикла проверка: если первое число в строке не начинается со знака, значить оно положительное - прибавляем его B(это нужно потому, что программа выполняет действия, только когда доходит до знака).
Аноним: Нормально, или надо построчно комментировать?
СтарыйМатематик: Спасибо, все понял
Похожие вопросы