广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现计算器功能
  • 684
分享到

C++实现计算器功能

2024-04-02 19:04:59 684人浏览 薄情痞子
摘要

本文实例为大家分享了c++实现计算器功能的具体代码,供大家参考,具体内容如下 说明: 前面简单尝试过计算器,只能支持加减乘除,这次完善了计算器的功能:支持带括号的表达式;支持&plu

本文实例为大家分享了c++实现计算器功能的具体代码,供大家参考,具体内容如下

说明:

前面简单尝试过计算器,只能支持加减乘除,这次完善了计算器的功能:
支持带括号的表达式;
支持±*/ (加减乘除)基本运算;
支持^(指数)运算;
支持取负号运算(-num);
支持阶乘!。

输入格式及结果:

括号和基本运算:

指数运算:

取负和混合运算:

阶乘:

代码:

//支持带括号的表达式,支持+-*/、^(指数)、取负、!(阶乘)
#include <iOStream>
#include <stack>
#include <math.h>

using namespace std;

double inStack();   //核心函数,将操作符有序的入栈计算, 最后返回结果
void calculate(stack<char>& Ope, stack<double>& Num);  //用来计算加减乘除, 结果放在数字栈顶
void factorial(stack<double>& Num);   //用来计算阶乘
int priority(char ope_);   //用来计算操作符的优先级

int main() {
    double result;   //最后的结果

    cout << "请输入:\n";
    result = inStack();   //将缓冲区的操作符和数字压入栈 

    cout << "结果是:\n" << result;

    return 0;
}

double inStack() {
    stack<char> Ope;
    stack<double> Num;
    char ope_;
    double num_;

    while (1) {
        if (cin.peek() >= '0' && cin.peek() <= '9') {  //判断下一个是否是数字
            cin >> num_;
            Num.push(num_);   //数字直接入栈
        }
        else {
            cin >> ope_;
            if (ope_ == '=') {
                while (!Ope.empty()) calculate(Ope, Num); //如果符号栈不空,就一直计算
                return Num.top();  //如果是等号且符号栈顶为空,就返回数字栈顶元素
            }
            else if (ope_ == '!') factorial(Num);  //如果是!就阶乘
            else if (ope_ == '(' ||Ope.empty()) Ope.push(ope_);    //如果符号是左括号或符号栈为空直接压入
            else if (ope_ == ')') {  //如果是右括号
                while (Ope.top() != '(') calculate(Ope, Num); //一直计算完括号里的
                Ope.pop();  //左括号出栈
            }
            else if (priority(Ope.top()) >= priority(ope_)) {  //如果栈顶符号的优先级大于等于当前
                calculate(Ope, Num);   //计算结果压入数字栈,取出当前栈顶
                Ope.push(ope_);  //压入当前符号
            }
            else Ope.push(ope_);  //否则就压入符号栈
        }
    }
}

void calculate(stack<char>& Ope, stack<double>& Num) {
    double a, b;

    if (Ope.top() == '-') {
        a = Num.top(); Num.pop();
        Ope.pop();   //取出负号
        Num.push(-a);  //压入负值
        if (!Num.empty()) {
            if(Ope.empty() || Ope.top() != '(')
                Ope.push('+');  //如果前面还有数字,就压入+,即变成加负值
        }
    }
    else {
        a = Num.top(); Num.pop();
        b = Num.top(); Num.pop();

        if (Ope.top() == '+') Num.push(b + a);
        else if (Ope.top() == '*') Num.push(b * a);
        else if (Ope.top() == '/') Num.push(b / a);
        else if (Ope.top() == '^') Num.push(pow(b, a));

        Ope.pop();
    }
}

void factorial(stack<double>& Num) {
    int a = static_cast<int>(Num.top());
    int result=1;

    for (int i = 1; i <= a; i++) result *= i;

    Num.push(static_cast<double>(result));
}

int priority(char ope_) {
    if (ope_ == '(') return 0;
    else if (ope_ == '+' || ope_ == '-') return 1;
    else if (ope_ == '*' || ope_ == '/') return 2;
    else if (ope_ == '^') return 3;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++实现计算器功能

本文链接: https://www.lsjlt.com/news/138291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现计算器功能
    本文实例为大家分享了C++实现计算器功能的具体代码,供大家参考,具体内容如下 说明: 前面简单尝试过计算器,只能支持加减乘除,这次完善了计算器的功能:支持带括号的表达式;支持&plu...
    99+
    2022-11-13
  • C#实现计算器功能
    本文实例为大家分享了C#实现计算器功能的具体代码,供大家参考,具体内容如下 在刚刚接触c#的时候,就想做一个简单加减乘除计算器。这就是目标,可惜一直没有动手去做,今天特意把它简单做了...
    99+
    2022-11-13
  • C++实现简易计算器功能
    本文实例为大家分享了C++实现简易计算器功能的具体代码,供大家参考,具体内容如下 介绍 介绍:仅支持自然数间的+ - * /操作,并没有括号。 实现:利用栈实现存储运算数以及运算符。...
    99+
    2022-11-13
  • C#实现计算器功能(winform版)
    本文实例为大家分享了C#实现计算器功能的具体代码,供大家参考,具体内容如下 代码: Random rad = new Random(); // 实例化随机对象         pr...
    99+
    2022-11-13
  • C#怎么实现计算器功能
    今天小编给大家分享一下C#怎么实现计算器功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。代码:using Sys...
    99+
    2023-06-29
  • C++实现简单的计算器功能
    用C++编写简单计算器,供大家参考,具体内容如下 限制: 1、只能使用分支语句与循环语句;2、不能使用数组和自定义函数;(即把自己当作只学到分支语句和循环语句的初学者) 计算器要求:...
    99+
    2022-11-13
  • C#实现简易计算器小功能
    本文实例为大家分享了C#实现简易计算器小功能的具体代码,供大家参考,具体内容如下 简易的登陆界面。 具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括...
    99+
    2022-11-13
  • C#实现简单的计算器功能
    本文实例为大家分享了C#实现简单的计算器功能的具体代码,供大家参考,具体内容如下 环境:VS2010及以上版本 1、建立个Window窗体应用 2、在工具箱里拖出两个TextBox...
    99+
    2022-11-13
  • 用C语言实现计算器功能
    本文实例为大家分享了用C语言实现计算器功能的具体代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> //C语言编写计算器程序 ^_^ v...
    99+
    2022-11-12
  • C++实现简单的计算器小功能
    用C++编写简单计算器,供大家参考,具体内容如下 限制: 1、只能使用分支语句与循环语句;2、不能使用数组和自定义函数;(即把自己当作只学到分支语句和循环语句的初学者) 计算器要求:...
    99+
    2022-11-13
  • C#实现简单的计算器小功能
    本文实例为大家分享了C#实现简单的计算器小功能的具体代码,供大家参考,具体内容如下 先来张效果图吧(5分钟写好,莫怪) 代码: 数字按钮绑定的是button_Clickd()方法 ...
    99+
    2022-11-13
  • C语言实现简易计算器功能
    本文实例为大家分享了C语言实现简易计算器功能的具体代码,供大家参考,具体内容如下 表达式求值项目(多功能计算器)。该项目主要包含了10个模块,10项功能: 1:加法运算:主要进行两个...
    99+
    2022-11-13
  • C#怎么实现简单的计算器功能
    这篇“C#怎么实现简单的计算器功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么实现简单的计算器功能”文章吧。1.界...
    99+
    2023-06-29
  • C#实现简易计算器功能(附源码)
    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 剖析: 1、先设计界面(按钮、文本框(一个显示算式,一个显示结果))布局 2、单击按钮将其对应内容显示...
    99+
    2022-11-12
  • C#实现简单的计算器功能(窗体)
    本文实例为大家分享了C#实现简单的计算器功能的具体代码,供大家参考,具体内容如下 1.界面设计 2.代码 using System; using System.Collection...
    99+
    2022-11-13
  • C++怎样实现简单的计算器功能
    C++怎样实现简单的计算器功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。限制:只能使用分支语句与循环语句;2、不能使用数组和自定义函数;(即把自己当作只学到...
    99+
    2023-06-29
  • C#如何实现简易计算器小功能
    这篇文章主要介绍C#如何实现简易计算器小功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下简易的登陆界面。具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括号的运算。音乐是一...
    99+
    2023-06-29
  • IO实现计算器功能
    本文实例为大家分享了IO实现计算器功能的具体代码,供大家参考,具体内容如下 代码: // // ViewController.m // Fraction_Calculato...
    99+
    2022-05-27
    IOS 计算器
  • Python实现计算器功能
    #!/usr/bin/python # -*- coding:UTF-8 -*- def sum(options,x,y):     t = options     if(t == "+"):...
    99+
    2023-01-31
    计算器 功能 Python
  • 用C语言实现简单的计算器功能
    本文实例为大家分享了C语言实现简单的计算器功能的具体代码,供大家参考,具体内容如下 简单计算器,实现简单的加减乘除功能,选择对应的运算符输出运算符对应的编号,然后输入我们要计算的两个...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作