C++版控制台计算器

本文介绍了一个使用C++编写的简易计算器,利用模板类vector进行数据存储和处理,通过输入计算表达式来实现基本的算术运算。作者分享了开发过程中的经验,包括如何高效地处理表达式和解决潜在的错误。此教程适合初学者理解C++的基本操作和模板类的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例是用C++写的一个简单计算器,输入计算表达式,然后就可以输出结果,在代码中,我使用了模板类vector,感觉十分的有用和方便,因为比较简单,所以希望大神不要嘲笑,本例花费了两个多小时,包括从想做这个计算器开始,到最终的BUG解决,感觉自己的开发效率瞬间就提升了。。不多说了,附上源代码,希望对和我一样简单技术的人有用吧,希望大家和我交流。。。。。。。


#include<iostream>
#include<vector>
using namespace std;
void Start();
int IfEnd();
int main()
{
    Start();
    IfEnd();
    return 0;
}
void Start()
{
    vector<double> a;
    vector<char> b;
    cout<<"请输入计算表达式,以#结束!"<<endl;
    double a1;
    char b1;
    cin>>a1>>b1;
    while(b1!='#')
    {
        a.push_back(a1);
        b.push_back(b1);
        cin>>a1>>b1;
    }
    a.push_back(a1);
    b.push_back(b1);
     int temp=0;
    for(int i=0;b[i]!='#';)
    {


        if(temp==1)
             i=0;
        if(b[i]=='*'||b[i]=='/')
        {
            if(b[i]=='*')
            {if(a.size()==2)
               {
                   a[0]=a[0]*a[1];
                   cout<<"计算结果为:"<<a[0]<<endl;
                   break;


               }
            a[i]=a[i]*a[i+1];
            temp=1;


          for(int j=i+1;j<a.size()-1;j++)
            a[j]=a[j+1];
          for(int j=i;j<b.size()-1;j++)
            b[j]=b[j+1];
          a.pop_back();
          b.pop_back();
          }
          if(b[i]=='/')
          {




            if(a.size()==2)
               {
                   a[0]=a[0]/a[1];
                   cout<<"计算结果为:"<<a[0]<<endl;
                   break;


               }
            a[i]=a[i]/a[i+1];
            temp=1;


         for(int j=i+1;j<a.size()-1;j++)
            a[j]=a[j+1];
         for(int j=i;j<b.size()-1;j++)
            b[j]=b[j+1];
         a.pop_back();
         b.pop_back();
        }
        else
        {
            temp=0;
            i++;
        }
          }






        else
        {
            temp=0;
            i++;
        }


    }




     temp=0;
    for(int i=0;b[i]!='#';)
    {


        if(temp==1)
             i=0;
        if(b[i]=='+'||b[i]=='-')
        {
            if(b[i]=='+')
            {
                if(a.size()==2)
               {
                   a[0]=a[0]+a[1];
                   cout<<"计算结果为:"<<a[0]<<endl;
                   break;


               }
            a[i]=a[i]+a[i+1];
            temp=1;


         for(int j=i+1;j<a.size()-1;j++)
            a[j]=a[j+1];
         for(int j=i;j<b.size()-1;j++)
            b[j]=b[j+1];
         a.pop_back();
         b.pop_back();
          /*for(int k=0;k<a.size();k++)
            cout<<a[k]<<b[k]<<endl;*/
        }
            }
            if(b[i]=='-')
            {
              if(b[i]=='-')
        {
            if(a.size()==2)
               {
                   a[0]=a[0]-a[1];
                   cout<<"计算结果为:"<<a[0]<<endl;
                   break;


               }
            a[i]=a[i]-a[i+1];
            temp=1;


         for(int j=i+1;j<a.size()-1;j++)
            a[j]=a[j+1];
         for(int j=i;j<b.size()-1;j++)
            b[j]=b[j+1];
         a.pop_back();
         b.pop_back();
            }
        else
        {
            temp=0;
            i++;
        }


    }
    }


}
int IfEnd()
{
    cout<<"继续计算?(y/n)"<<endl;
    char a;
    cin>>a;
    if(a=='y'||a=='Y')
        Start();
    else
        return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值