21xrx.com
2025-03-27 07:16:10 Thursday
文章检索 我的文章 写文章
C++栈实现简易计算器
2023-07-07 17:32:17 深夜i     12     0
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++栈实现简易计算器是一种很常见的方法,这种方法的优点在于代码简单易懂,容易实现。对于初学者来说,这也是一个不错的练习机会。

  
  

评论区