calculator.cpp

来自「一个简单的加减乘除四则运算的计算器功能」· C++ 代码 · 共 121 行

CPP
121
字号
#include "calculator.hpp"

int	token=0;							//记录当前按下的键



int add_exp(void)
{
	int temp1=mul_exp();
	int temp2;

	if(token==sadd)				//加号
	{	
		temp2=add_exp();
		return (temp1+temp2);
	}
	else if(token==ssub)		//减号
	{   
		temp2=add_exp();
		return (temp1-temp2);
	}
	else if(token==senter)		//井号
	{
		return temp1;			
	}
	else if(token==')')
	{
		return temp1;
	}
	else			//错误
	{
		return serr;	
	}
			
}

int mul_exp()
{	
	int temp1=kuo_exp();
	int temp2;
	
	if(token==smul)			//乘号
	{
		temp2=mul_exp();
		return (temp1*temp2);
	}
	else if(token==sdiv)		//除号
	{
		temp2=mul_exp();
		return (temp1/temp2);
	}		
	else if(token==senter)		//井号
	{
		return temp1;
	}
	else				//错误
	{
		return temp1;
	}		
}

int kuo_exp()
{
	int key=GetKey();
	int temp;
	if(key==srig)
	{
		temp=add_exp();
		token=GetKey();
		return temp;
		
	}
	else if(key<=9 && key>=0)
	{
		cin.putback(key+'0');
		temp=num_exp();
		return temp;
	}
	else		//错误
	{
		return serr;
	}
	
}

int num_exp()
{
	
	int key=GetKey();
	int temp=0;
	while(key<=9 && key>=0)
	{
		temp=key+temp*10;
		key=GetKey();
	}
	token=key;
	return temp;

}


int GetKey(void)
{
	char ch;
	int temp;
	cin>>ch;
	if(ch<='9' && ch>='0')
	{
		temp=ch-'0';
		return temp;
	}
	else if(ch=='+') return sadd;
	else if(ch=='-') return ssub;
	else if(ch=='*') return smul;
	else if(ch=='/') return sdiv;
	else if(ch=='(') return srig;
	else if(ch==')') return slft;
	else if(ch=='#') return senter;
	else return serr;	
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?