ubuntu开发环境---QT creator 实现四则运算计算器设计思路

简单来看这个基础的四则运算器,是利用ui以及开发者协同开发
    其操作步骤可拆分为以下几个步骤
①首先分析整个小项目,需要什么组件,拥有什么功能
   所以先利用ui工具创建出一个可视化运算器界面,拥有简单四则运算器的基本功能按键以及数据公式显示窗口
②再利用“1~9”按键以及“+ - * / ”按键配合“LineEdit”input输入组件,--->实现可视化数据公式显示;
    eg:
Widget.h文件添加 --- 右键转到槽(自动生成)

private slots:
    void on_zerobutton_clicked();
private:
    QString expression;


Widget.cpp文件添加
 

  void Widget :: on_zerobutton_clicked()
{
   expression +="+";
   ui->lineEdit->setText(expression);
}

以上述代码实现点击“0“按键在lineEdit组件显示0;
根据上述例子,其他基础按键实现该效果的代码逻辑都是如此
如”<---“退位键,”C“清空键以及其他功能键,查询相应语句,写出程序逻辑。

 


整个简单四则运算器,最重要且最难的功能版块就是在于如何去实现这个说简单不简单,说难不难的逻辑
首先脑子里面先构思出运算逻辑
    第一个问题:对于四则运算的简单运算优先级是总所周知的,所以我们得去判断如何实现这个优先级的
    我们想要知道一个数字的大小就可以直接去比较,同理,字符符号也是如此,话不多说直接上代码:
eg: 
在Widget.h文件中
去声明这个所需要用的函数
private slots:

 int priority (char ch);

在Widget.cpp文件中添加

int Widget::priority (char ch)
{
    switch(ch)
    {
    case ')':
    return 3;
    case '*':
    case '/':
    return 2;
    case '+':
    case '-':
    return 1;
    default :
    return 0;
    }
}

上述代码就是一个很简单符号优先级判断函数;
通过判断字符种类返回一个数字,用数字大小判断优先级

第二个问题:如何去存储数据?
存储数据,可以有多种方法,可以用结构体数组进行存储 ( 比较限制你的计算位数 ),也可以用栈进行存储 ( 利用了先进后出的规律实现 ),本文实现的方法就是采用栈的实现:
    在QT Creator 中,QStack.h文件中包含了栈的使用方法
①创建两个栈,一个用于存储数字,一个用于存储运算符
②判断字符是否为'0'~'9'之间,是则,乘10加到tmp中,再将tmp入栈
③再判断其入栈的条件,比如说empty为空,运算符数组中的元素优先级大于栈顶运算符,‘(’且后面紧接的不是‘)’就会进行运算符的入栈。
④如果栈顶是‘(’且运算符数组为‘)’,将栈顶元素出栈pop
⑤如果运算符数组优先级小于或等于栈顶优先级,则进入运算,或者运算符为‘)’且,栈顶不为空,且如果运算符数组为空且栈为空也进入。里面使用到的算法也就比较简单
 

char ch = s_opt.top();
   s_opt.pop();
   switch(ch){
   case '+':
         num1 = s_num.top();
         s_num.pop();
         num2 = s_num.top();
         s_num.pop();
         s_num.push(num1+num2);
         break;
   }

其他三则运算符也是同样的逻辑;

运行效果:



总的来说整体四则运算符计算器,设计框架以及思路就是在于如何去实现ui设计界面和四则运算实现思路;

该设计只是打造一个非常基础的框架,若想实现更为丰富的四则运算器,可采用该思路。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

底层电工人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值