C++实现一个简单的计算器

Posted Jing Sir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现一个简单的计算器相关的知识,希望对你有一定的参考价值。

如下所示,这是一个简单的计算器:

#include<iostream>
#include<cstring>
using namespace std;
template <class T>
class stack

private:
    int top;//栈顶
    int maxtop;
    T *st;//数组
public:
    stack(int maxstacksize=10)
    
        maxtop=maxstacksize-1;
        st=new T[maxstacksize];
        top=-1;
    
    ~stack()
    
        delete [] st;
    
    //判断栈是否已满
    bool isfull()
    
        return top==maxtop;
    
    //判断栈是否为空
    bool isempty()
    
        return top==-1;
    
    //向栈顶添加元素
    bool add(const T &x)
    
        if(isfull())
        
            cout<<"no memory"<<endl;
            return false;
        
        top++;
        st[top]=x;
        return true;
    
    T del()//取出并删除元素
    
        if(isempty())
        
            cerr<<"no element"<<endl;
        
        T x;
        x=st[top];
        top--;
        return x;
    
    //返回栈顶元素值
    T returntop()
    
        return st[top];
    
    //清空栈
    void clear()
    
        top=-1;
    
    //输出栈
    void output()
    
        if(isempty())
        
            cout<<"栈是空的"<<endl;
        
        else
        
            for(int i=0;i<=top;i++)
            
                cout<<st[i]<<'\\t';
            
            cout<<endl;
        
    
;
int main()

    char math[20];
    char fuhao[10]=0,0,0,0,0,0,0,0,0,0;
    char shuzi[10]='-','-','-','-','-','-','-','-','-','-';
    int number[10];
    cout<<"输入算数式,请以#结尾"<<endl;
    cin>>math;
    int j=0;
    int p=0;
    for(int i=0;i<20&&math[i]!='#';i++)
    
        if(math[i]>=48&&math[i]<=57)
        
            shuzi[j]=math[i];
            j++;
        
        else
        
            fuhao[p]=math[i];
            p++;
        
    
    for(int i=0;i<20&&math[i]!='#';i++)
    
        if(math[i]=='('&&i!=0)
        
            if(math[i-1]>=48&&math[i-1]<=57)
            
                cout<<"error"<<endl;
                goto ending;
            
        
    
    for(int i=0;i<10&&shuzi[i]!='-';i++)
    
        number[i]=(int)shuzi[i]-48;
    
    for(int i=0;i<10&&fuhao[i]!=0;i++)
    
        if(fuhao[i]=='(')
        
            int f=0;
            for(int q=i;q<10&&fuhao[q]!=0;q++)
            
                if (fuhao[q]==')')
                
                    f++;
                
            
            if(f==0)
            
                cout<<"表达式错误"<<endl;
                goto ending;
            
        
    
    return 0;

 

以上是关于C++实现一个简单的计算器的主要内容,如果未能解决你的问题,请参考以下文章

利用C++日期类实现简单的日期计算器

华为机试真题 C++ 实现火星文计算

华为机试真题 C++ 实现火星文计算

c++简单复数计算器

C++实现一些简单二维三维物体的属性计算(附简单测试用例,粘贴可用)

QML和C++混合编程实现以下功能: