Вычисление значений математического выражения - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

(Перенесено из дублирующей темы) Помогите пожалуйста с задачей! Составить программу вычисления значения математического выражения, полученного путем сочетания произвольных чисел и знаков арифметических действий. Действия выполнять по порядку. Заранее большое спасибо!!!

Решение задачи: «Вычисление значений математического выражения»

textual
Листинг программы
Const z = '+-*/';
 
Function Oper(x,y : Real; o : Char ) : Real;
Begin
 Case Pos(o,z) of
   1 : Oper:=x+y;
   2 : Oper:=x-y;
   3 : Oper:=x*y;
   4 : Oper:=x/y;
 end;
end;
 
Var
  S   : String;
  A,B : Real;
  C   : Char;
Begin
  S:='60-8/2+5*90';  { Rreadln(S); } 
  A:=0; B:=0; C:='+';
  While Length(S)>0 do
  Begin
    If Pos(S[1],z)=0 then
    Begin
      B:=B*10+Ord(S[1])-Ord('0');
      Delete(S,1,1);
    end
      else
      Begin
        A:=Oper(A,B,C);
        B:=0;
        C:=S[1]; 
        Delete(S,1,1);
      end;
  end;
  Writeln(Oper(A,B,C));
end.

Объяснение кода листинга программы

  1. Объявляется константа z, которая содержит символы арифметических операций.
  2. Объявляется функция Oper, которая принимает три аргумента: x, y и o. Эта функция возвращает результат операции, указанной символом o в строке S.
  3. Объявляются переменные S, A и B, которые будут использоваться в процессе выполнения программы.
  4. В цикле While происходит обработка каждого символа в строке S.
  5. Если первый символ в S равен нулю, то это означает конец строки. В этом случае переменная B обновляется, чтобы отразить результат вычисления последнего выражения.
  6. Если первый символ в S не равен нулю, то он используется как символ операции для вызова функции Oper. Результат этой функции присваивается переменной A, а C обновляется до следующего символа в S.
  7. После обработки всех символов в S выводится результат вычисления выражения A*B.

Оцени полезность:

11   голосов , оценка 4 из 5