21xrx.com
2024-12-22 23:19:45 Sunday
登录
文章检索 我的文章 写文章
C++栈实现简易计算器
2023-07-07 17:32:17 深夜i     --     --
C++ 计算器 实现 简易

C++是一种非常流行的编程语言,其用途十分广泛。其中,栈是一种常见的数据结构,也是C++编程中不可或缺的一部分。在本文中,我们将探讨如何使用C++栈实现一个简易计算器。

在开始之前,我们先来了解一下什么是栈。栈是一种遵循后进先出(LIFO)原则的线性数据结构,可以被看作是一种具有特殊限制的线性表。通俗点说,就是像一堆盘子一样,后放进去的先取出来,而先放进去的需要等到后面的盘子取完才能取出来。

在计算器中,我们需要实现以下几个功能:

- 输入数字与操作符:将输入的数字或操作符压入栈中;

- 运算操作:当输入的是运算符时,从栈中弹出两个元素进行计算,再将计算结果压入栈中;

- 显示结果:将栈顶元素作为结果进行显示。

下面是代码实现:


#include<iostream>

#include<stack>

#include<string>

using namespace std;

int main(){

  stack<int> numStack;//定义一个存储数值的栈

  string inputStr;//定义输入的表达式

  int index = 0;//定义索引

  int num1, num2;//定义两个变量存储弹出的数字

  char oper;//定义一个字符变量存储运算符

  getline(cin, inputStr);//输入表达式

  while (index < inputStr.size()){ //循环遍历输入的字符串

    if (inputStr[index] >= '0' && inputStr[index] <= '9'){ //判断是否为数字

      numStack.push(inputStr[index] - '0'); //将数字压入栈中

    }

    else if (inputStr[index] == '+' || inputStr[index] == '-' //判断是否为运算符

       || inputStr[index] == '*' || inputStr[index] == '/'){

      num2 = numStack.top();//弹出栈顶元素

      numStack.pop();

      num1 = numStack.top();//弹出次栈顶元素

      numStack.pop();

      switch (inputStr[index]){//根据输入的运算符进行相应操作

      case '+':

        numStack.push(num1 + num2);

        break;

      case '-':

        numStack.push(num1 - num2);

        break;

      case '*':

        numStack.push(num1*num2);

        break;

      case '/':

        numStack.push(num1 / num2);

        break;

      default:

        break;

      }

    }

    index++;//索引加1

  }

  cout << numStack.top() << endl;//输出栈顶元素

  return 0;

}

上述代码中,我们首先定义了一个存储数值的栈,并通过输入字符串的方式获取算式。接着,我们循环遍历字符串,判断输入是否为数字或运算符。如果输入为数字,则将其放入栈中;如果输入为运算符,则从栈中弹出两个元素进行计算,并将结果压入栈中。

最后,我们输出栈顶元素,即完成了计算器的功能。需要注意的是,这里实现的计算器只能进行简单的四则运算,如果需要进行更加复杂的计算,还需要进一步完善代码。

总而言之,使用C++栈实现简易计算器是一种很常见的方法,这种方法的优点在于代码简单易懂,容易实现。对于初学者来说,这也是一个不错的练习机会。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复