⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcultor.cpp

📁 计算器系统用于VC
💻 CPP
字号:
#include"stack.h"
#include"calculator.h"

void calculator::enter(double num)
 {  
	 s.push(num);
 }
bool calculator::get2operands(double& left,double& right)
{
	if(s.isempty())
	{
	 return false;
	}
	left=s.pop();
	if(s.isempty())
	{return false;
	}
	right=s.pop();
	return true;
}

void calculator::compute(char ch)
{ 
    bool result;
	double c;double d;
	result=get2operands(c,d);
	if(result==true)
		switch(ch)
	{
     case'+': s.push(d+c);cout<<"The result is "<<s.Top()<<"\n";break;
     case'-': s.push(d-c);cout<<"The result is "<<s.Top()<<"\n";break;
	 case'*': s.push(d*c);cout<<"The result is "<<s.Top()<<"\n";break;
	 case'/': 
	if(c==0)
	{    cerr<<"Divide by 0,invaild enter!"<<endl;
		 s.clear();
	}else s.push(d/c);cout<<"The result is "<<s.Top()<<"\n";break;
	} 
	else
		s.clear();
}
void calculator::postfix()
{	
	Stack t; char ch,y;
    
	t.clear();t.push('=');
	
   while(cin>>ch,ch!='=')
	{
	   if(isdigit(ch)) {
		   cin.putback(ch);double f;
		   cin>>f;
		    enter(f);}
		else if(ch==')')
			for(y=t.pop();y!='(';y=t.pop())
			{compute(y);}
			else{
				for(y=t.pop();isp(y)>icp(ch);y=t.pop())
			compute(y);
				t.push(y);t.push(ch);
			
			}
		
	}
	while(!t.isempty()){
		y=t.pop();	cout<<y;compute(y);	
	}
   

}
 int calculator:: isp(char a)
 { 
   switch(a)
   {
   case '=': return 0; 
   case '(': return 1;
   case '*':return 5;
   case '/':return 5;
   case '%':return 5;
   case '+':return 3;
   case '-':return 3;
   case ')':return 8;
    }
  return 0;
 }
 int  calculator:: icp(char b)
 {
  switch(b)
   {
   case '=':return 0;
   case '(':return 8;
   case '*':return 4;
   case '/':return 4;
   case '%':return 4;
   case '+':return 2;
   case '-':return 2;
   case ')':return 1;
    }
 return 0;
}






		




    	
 



  

⌨️ 快捷键说明

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