采用c++qt实现带括号的四则优先级运算的算法计算器源码软件(支持浮点正负数)

手把手教你学懂四则优先级运算的算法实现

欢迎各位来到我的博客,如果觉得小弟写得还行就收藏吧!

各位可能是刚开始学单片机,或许是51单片机、stm32单片机,也可能是刚开始学各种编程语言,想完成一个小小的功能齐全的计算器程序。如果只是为了完成简单的单步加减乘除运算,我相信对大家来说都没有什么难度,但是实现带括号的四则运算功能,编程就会发现还是比较有难度,所以这里我分享一下我以前写过的这个算法。

这里的实现算法已经被模块化为两个函数,无论什么单片机,什么平台,只需要调用相应函数即可实现此功能。

操作系统win10

使用的软件qt

基本实现了一个科学计算器。800行代码左右,但是涉及到了c++(qt)各种基本操作方面,和基本数据结构的使用,是一个很好的qt初学者练习项目。

使用c++语言实现(其实基本使用c语言编写的):

str = "(1.3+2)*3.1+9*2-50"
double result = comp(str);    //即可计算出结果

做的一个计算器如下:

代码:

double Comp::backExpressionCalculate(char exp[])
{
    int i;
    double a,b,c;
    double tmp = 0;

    double stack[MAXSIZE];
    char strNum[MAXSIZE];

    int cnt=0;
    int top = -1;
    char operate;

    double res = 0;
    for(i = 0;exp[i]!='\0';++i)
    {
        if((exp[i]>='0'&&exp[i]<='9')||exp[i]=='.')
        {
            strNum[cnt++] = exp[i];
        }
        else if(exp[i] == ' ' ||exp[i]=='+'||exp[i]=='-'||exp[i]=='*'||exp[i]=='/')
        {
            if(cnt>0)
            {
                strNum[cnt++] = '\0';
                cnt = 0;
                tmp = str2double(strNum);
                stack[++top] = tmp;
            }
        }
        if(exp[i] == '+' ||exp[i] == '-' ||exp[i] == '*' ||exp[i] == '/')
        {
            operate = exp[i];
            b = stack[top--];
            a = stack[top--];
            c = calculate(a,operate,b);
            stack[++top] = c;
        }
    }
    res = stack[top];
    return res;

}

我的完整工程代码:百度搜索:cc科学计算器c++(qt)实现,csdn中即可下载

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值