#include"stdio.h"
#include"stdlib.h"
#include"calc.h"
#include <math.h>
#define POW 1
#define MUL 2
#define DIV 3
#define MOD 4
#define DIV_INT 5
#define ADD 6
#define SUB 7
#define MOVEL 8
#define MOVER 9
#define BIG 10
#define SML 11
#define BIG_EQAUL 12
#define SML_EQAUL 13
#define NOT 14
#define EQAUL 15
#define BIT_AND 16
#define DIFFER_OR 17
#define BIT_OR 18
#define AND 19
#define OR 20
#define Lp 21
#define Rp 22
#define END 23
#define OPSUM 23
#define Epsilon 0
int ch_char_int(char *data);
int ch_int_char(int data,char *parm);
float eval(char tag,float left,float right);
int getToken(float *nump,char *box,int *state);
int instead(char *box,char *express,int x1,int x2,int x3, int x4);
float express_calc(char *box);
/*-------------------------------运算符号的优先级的设置--------------------------------*/
int osp[23] = {13,11,11,11,11,10,10,9,9,8,8,8,8,7,7,6,5,4,3,2,13,1,1};
int isp[21] = {12,11,11,11,11,10,10,9,9,8,8,8,8,7,7,6,5,4,3,2,1};//主要是为了"("来设置的。
struct
{
char op[2];
int code;
}opchTbl[24] =
{
{
{'*','/0'},MUL},//11
{
{'/','/0'},DIV},//11
{
{'%','/0'},MOD},//11
{
{'/','/'},DIV_INT},//11
{
{'+','/0'},ADD},//10
{
{'-','/0'},SUB},//10
{
{'<','<'},MOVEL},//9
{
{'>','>'},MOVER},//9
{
{'>','/0'},BIG},//8
{
{'<','/0'},SML},//8
{
{'>','='},BIG_EQAUL},// 8
{
{'<','='},SML_EQAUL},// 8
{
{'!','='},NOT},// 7
{
{'=','='},EQAUL},// 7
{
{'&','/0'},BIT_AND},//6
{
{'^','/0'},DIFFER_OR},//5
{
{'|','/0'},BIT_OR},//4
{
{'&','&'},AND},// 3
{
{'|','|'},OR},// 2
{
{'(','/0'},Lp},//13
{
{')','/0'},Rp},/
用c语言实现数学多项式的计算
最新推荐文章于 2023-01-17 08:08:11 发布