• 大小: 9KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: C/C++
  • 标签: c++  计算机  

资源简介

//介绍程序 void introduction(){ cout<<"这是一个计算机程序,支持:+,-,*,/,(,)的浮点数运算"<<endl; cout<<"请不要以+,-,*,/开头,请注意括号的匹配"<<endl; cout<<"请不要输入不必要的括号"<<endl; } 如输入1+3*1.2+(2+2.2)= 就会给计算结果8.8

资源截图

代码片段和文件信息

#include 
#include 
using namespace std;

/***************************************************************/
//定义一个Stack
enum Error_code { success overflow underflow }; 
const maxsize=20;
template  
class Stack { 
public: 
Stack(); 
bool empty() const; 
bool full() const; 
int size() const; 
void clear(); 
Error_code top(T &item) const; 
Error_code pop(); 
Error_code push(const T &item); 
private: 
int count; 
T entry[maxsize]; 
}; 

template  
Stack::Stack() 
{  count=0; 


template  
bool Stack::empty () const 
{ return count==0; 


template  
bool Stack::full () const
{ return count==maxsize; 


template  
int Stack::size() const
{ return count; 


template  
void Stack::clear() 
{ count=0; 


template  
Error_code Stack::top (T &item) const

if (empty()) return underflow; 
    item= entry[count-1]; 
    return success; 


template  
Error_code Stack::pop () 

if (empty()) return underflow; 
    count--; 
    return success; 


template  
Error_code Stack::push (const T &item)

if (full()) return overflow; 
    entry[count++]=item; 
    return success; 







/***************************************************************/
//进行计算的函数
void calculate(char sStack&num)
{
double ab;
num.top (b);
num.pop ();
num.top (a);
num.pop ();
switch(s){
case‘+‘:num.push (a+b);break;
case‘-‘:num.push (a-b);break;
case‘*‘:num.push (a*b);break;
case‘/‘:if(b!=0.0) num.push (a/b);
    else cout<<“分母不能为0“< break;
}
}

/***************************************************************/
//判断优先级,得到结果的函数
void do_command(Stack&numStack&ch){
    string sentence;
string s;
int i=0;
    double answer;
string char_num=““;
char sign;
cout<<“请输入要计算的式子“<
cin>>sentence;
s=sentence;
//接下来作为预读;

        while(1)
{
if(sentence[i]>=‘0‘&&sentence[i]<=‘9‘||sentence[i]==‘.‘)
{
char_num=char_num+sentence[i];
i++;
while(sentence[i]>=‘0‘&&sentence[i]<=‘9‘||sentence[i]==‘.‘)
{char_num=char_num+sentence[i];
i++;}
//得到一个数以后进行压栈操作
num.push(atof(char_num.c_str()));



}
else
{
sign=sentence[i];
i++;//得到了一个字符以后进行压栈操作
ch.push (sign);

}
char_num=““;//当且仅当读入了2个数字以上才能继续进行
if(num.size()==2)
break;

}
while(sentence[i]!=‘\0‘){
if(sentence[i]>=‘0‘&&sentence[i]<=‘9‘||sentence[i]==‘.‘){
char_num=char_num+sentence[i];
i++;
while(sentence[i]>=‘0‘&&sentence[i]<=‘9‘||sentence[i]==‘.‘){
char_num=char_num+sentence[i];
i++;
}//得到一个数以后进行压栈操作
num.push(atof(char_num.c_str()));
}
 


else

            sign=sentence[i];

i++;
switch(sign){
        char c;

case‘+‘:
case‘-‘:ch.top(c);
    if(c!=‘(‘) 
{calculate(cnum);ch

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-01-18 13:50  计算机程序最终版本\
     文件        5289  2012-03-24 14:29  计算机程序最终版本\calculate.cpp
     目录           0  2013-01-18 13:48  计算机程序最终版本\Debug\
     文件        4419  2012-03-24 14:29  计算机程序最终版本\计算机程序最终版本.dsp
     文件         544  2012-03-24 14:20  计算机程序最终版本\计算机程序最终版本.dsw
     文件       41984  2013-01-18 13:50  计算机程序最终版本\计算机程序最终版本.ncb
     文件       48640  2013-01-18 13:50  计算机程序最终版本\计算机程序最终版本.opt
     文件        1357  2013-01-18 13:46  计算机程序最终版本\计算机程序最终版本.plg

评论

共有 条评论