関数calculate_formula_operations マニュアル

(The documentation of function calculate_formula_operations)

Last Update: 2021/12/1


◆機能・用途(Purpose)

数式を表す文字列中の 「数値1+数値2」「数値1-数値2」「数値1∗数値2」「数値1/数値2」 となっている部分の計算を実行し、 計算結果の数値を表す文字列で置換する。
Conduct calculation of a partial string of forms “numerical value 1 + numerical value 2”, “numerical value 1 - numerical value 2”, “numerical value 1 ∗ numerical value 2”, and “numerical value 1 / numerical value 2”, in a string that represents a mathematical formula, and replace the partial string by a string that represents the resultant numerical value.


◆形式(Format)

#include <formula.h>
inline char ∗calculate_formula_operations (char ∗formula,char ∗pattern)


◆引数(Arguments)

formula 数式を表す文字列。
A string that represents a mathematical formula.
pattern 引数formulaが表す文字列の構造。 関数analyze_formulaに引数formulaを渡して得られる戻り値を使用する。
The structure of a string represented by argument formula. Use the return value of function analyze_formula to which formula is used as an argument.


◆戻り値(Return value)



◆使用例(Example)

char formula1[]="1.0+2.0∗(3.0+4.0∗5.0)";
char ∗pattern1=analyze_formula(formula1);
char ∗formula2=calculate_formula_operations(formula1,pattern1);
char ∗pattern2=analyze_formula(formula2);
char ∗formula3=calculate_formula_operations(formula2,pattern2);

この例において、formura2の計算では formula1の最初の「数値1∗数値2」である「4.0∗5.0」が計算されて
formula2="1.0+2.0∗(3.0+2.000000e+01)"
となる。 formula3の計算では formula2に「数値1∗数値2」「数値1/数値2」が存在しないので 最初の「数値1+数値2」である「3.0+2.000000e+01」が計算されて
formula3="1.0+2.0∗(2.300000e+01)"
となる。 この計算においてformula2の先頭の「1.0+2.0」は2.0の直後に「∗」があるので 「数値1+数値2」とは見なされない。 また「2.0∗(3.0+2.000000e+01)」も後が()付きなので 「数値1∗数値2」とは見なされない。
In this example, the “4.0∗5.0” part, which is the first partial string of “numerical value 1 ∗ numerical value 2” in formula1, is replaced with a numerical value in the calculation of formula2. The result is:
formula2="1.0+2.0∗(3.0+2.000000e+01)"
This formula2 does not have a partial string of “numerical value 1 ∗ numerical value 2” or “numerical value 1 / numerical value 2” patterns. Thus the “3.0+2.000000e+01” part, which is the first partial string of “numerical value 1 + numerical value 2” in formula2, is replaced with a numerical value in the calculation of formula3. The result is:
formula3="1.0+2.0∗(2.300000e+01)"
Note that the “1.0+2.0” part of formula2 is not regarded as a “numerical value 1 + numerical value 2” pattern because “∗” appears immediately after 2.0. Also, the “2.0∗(3.0+2.000000e+01)” part is not regarded as a “numerical value 1 ∗ numerical value 2” pattern because () is present for the “numerical value 2” part.