失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 科学计算器 c语言源代码 科学计算器C语言代码

科学计算器 c语言源代码 科学计算器C语言代码

时间:2024-04-23 05:43:27

相关推荐

科学计算器 c语言源代码 科学计算器C语言代码

#include

#include

#include

#include

using namespace std;

enum types { DELIMITER = 1, VARIABLE, NUMBER};//定义枚举类型把DELIMITER初试化为1后面

//的相应的是前面值+1

class parser

{

char *exp_ptr; // 定义一个指向表达式的指针

char token[80]; // 存储表达式中的字符变量

char tok_type; // 存储具体是什么类型

void eval_exp2(double &result);

void eval_exp3(double &result);

void eval_exp4(double &result);

void eval_exp5(double &result);

void eval_exp6(double &result);

void atom(double &result);

void get_token();

void serror(int error);

int isdelim(char c);

public:

parser();

double eval_exp(char *exp);

};

parser::parser()

{

cout<

cout<

cout<

cout << "\t在运算过程中,输入字母N或n 回车,结束程序运行\n\n";

cout<

exp_ptr = NULL;//把exp_ptr的指针初始化为空

}

// 方法eval_exp的具体实现过程

double parser::eval_exp(char *exp)

{

double result;

exp_ptr = exp;//把传递过来的参数exp赋给exp_ptr

get_token();

if(!*token)

{

serror(2); //输出没有任何表达式的错误信息

return 0.0;

}

eval_exp2(result);

if(*token) serror(0); // last token must be null

return result;

}

// 两个变量字符是加或者减操作

void parser::eval_exp2(double &result)

{

register char op;

double temp;

eval_exp3(result);

while((op = *token) == '+' || op == '-')

{

get_token();

eval_exp3(temp);

switch(op)

{

case '-':

{

result = result - temp;

break;

}

case '+':

{

result = result + temp;

break;

}

}

}

}

// 两个变量是乘或者除操作 或者是取余

void parser::eval_exp3(double &result)

{

register char op;

double temp;

eval_exp4(result);

while((op = *token) == '*' || op == '/' || op == '%')

{

get_token();

eval_exp4(temp);

switch(op)

{

case '*':

result = result * temp;

break;

case '/':

result = result / temp;

break;

case '%':

result = (int) result % (int) temp;

break;

}

}

}

// 进行^运算

void parser::eval_exp4(double &result)

{

double temp, ex;

register int t;

eval_exp5(result);

if(*token== '^')

{

get_token();

eval_exp4(temp);

如果觉得《科学计算器 c语言源代码 科学计算器C语言代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。