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