exprint.c
来自「数学表达式计算和解析 用c语言编写的,内含有例.速度较快」· C语言 代码 · 共 120 行
C
120 行
/*
File: ExprInt.c
Auth: Brian Allen Vanderburg II
Date: Thursday, May 1, 2003
Desc: Functions for the internal workings of ExprEval
This file is part of ExprEval.
*/
/* Includes */
#include "expreval.h"
#include "exprincl.h"
#include "exprint.h"
/* This function evaluates each subnode. The result
is the value of the last subnode */
EXPR_FUNCTIONSOLVER(__exprMultiFunc)
{
int pos;
int err;
EXPRTYPE tmp;
for(pos = 0; pos < count; pos++)
{
EXPR_EVALNODE(pos, tmp);
}
*val = tmp;
return EXPR_ERROR_NOERROR;
}
/* Function for addition */
EXPR_FUNCTIONSOLVER(__exprAddFunc)
{
EXPRTYPE val1, val2;
int err;
EXPR_REQUIRECOUNT(2)
EXPR_EVALNODE(0, val1);
EXPR_EVALNODE(1, val2);
*val = val1 + val2;
return EXPR_ERROR_NOERROR;
}
/* Function for subtraction */
EXPR_FUNCTIONSOLVER(__exprSubFunc)
{
EXPRTYPE val1, val2;
int err;
EXPR_REQUIRECOUNT(2);
EXPR_EVALNODE(0, val1);
EXPR_EVALNODE(1, val2);
*val = val1 - val2;
return EXPR_ERROR_NOERROR;
}
/* Function for multiplication */
EXPR_FUNCTIONSOLVER(__exprMulFunc)
{
EXPRTYPE val1, val2;
int err;
EXPR_REQUIRECOUNT(2);
EXPR_EVALNODE(0, val1);
EXPR_EVALNODE(1, val2);
*val = val1 * val2;
return EXPR_ERROR_NOERROR;
}
/* Function for division */
EXPR_FUNCTIONSOLVER(__exprDivFunc)
{
EXPRTYPE val1, val2;
int err;
EXPR_REQUIRECOUNT(2);
EXPR_EVALNODE(0, val1);
EXPR_EVALNODE(1, val2);
/* dividing by zero? */
if(val2 == 0.0)
{
EXPR_RETURNSOFTERR(EXPR_ERROR_DIVBYZERO);
}
*val = val1 / val2;
return EXPR_ERROR_NOERROR;
}
/* Function for negative */
EXPR_FUNCTIONSOLVER(__exprNegFunc)
{
EXPRTYPE val1;
int err;
EXPR_REQUIRECOUNT(1);
EXPR_EVALNODE(0, val1);
*val = -val1;
return EXPR_ERROR_NOERROR;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?