计算器程序怎么实现 可以输入max() min(),将其和别的数一起进行运算
计算器程序如何实现 可以输入max() min(),将其和别的数一起进行运算
如何实现
可以输入max() min(),将其和别的数一起进行运算
比如输入7+8*9-max(3+5,4-2)+7,也能给出结果
附计算器原程序,请在其上帮忙修改
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cstring>
using namespace std;
enum types { DELIMITER = 1, VARIABLE, NUMBER};//定义枚举类型把DELIMITER初试化为1后面的相应的是前面值+1
class Info{
public:
void displayInfo();
};
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);
};
void Info::displayInfo(){
cout < < "==============================================================\n ";
cout < < "====================这是一个计算器程序========================\n ";
cout < < "==============================================================\n ";
cout < < "* 说明:可以进行+ - * \ % ^ 操作您还可以用括号输入您的表达式 *\n ";
cout < < "* 您输入表达式不需要输=号 例:您可输入(6+7)*5\\7+4 然后回车 *\n ";
cout < < "==============================================================\n\n ";
cout < < "\t\t输入点号(.)回车,结束程序运行\n\n ";
}
// 类构造函数的具体实现
parser::parser()
{
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;
如何实现
可以输入max() min(),将其和别的数一起进行运算
比如输入7+8*9-max(3+5,4-2)+7,也能给出结果
附计算器原程序,请在其上帮忙修改
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cstring>
using namespace std;
enum types { DELIMITER = 1, VARIABLE, NUMBER};//定义枚举类型把DELIMITER初试化为1后面的相应的是前面值+1
class Info{
public:
void displayInfo();
};
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);
};
void Info::displayInfo(){
cout < < "==============================================================\n ";
cout < < "====================这是一个计算器程序========================\n ";
cout < < "==============================================================\n ";
cout < < "* 说明:可以进行+ - * \ % ^ 操作您还可以用括号输入您的表达式 *\n ";
cout < < "* 您输入表达式不需要输=号 例:您可输入(6+7)*5\\7+4 然后回车 *\n ";
cout < < "==============================================================\n\n ";
cout < < "\t\t输入点号(.)回车,结束程序运行\n\n ";
}
// 类构造函数的具体实现
parser::parser()
{
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;