当前位置: 首页 > news >正文

南山网站设计线企业商城网站建设

南山网站设计线,企业商城网站建设,如何做家教网站,女生化妆品网站建设规划书计算器中的“”按钮这部分的代码解释 目录 制作计算器中的“”按钮这部分的代码解释 一、代码部分 二、解释 三、思路 四、死循环#xff01; 一、代码部分 void Widget::on_equalButton_clicked() {QStackint s_num,s_opt; //声明两个int类型变量char opt[128…计算器中的“”按钮这部分的代码解释 目录 制作计算器中的“”按钮这部分的代码解释 一、代码部分 二、解释 三、思路 四、死循环 一、代码部分 void Widget::on_equalButton_clicked() {QStackint s_num,s_opt; //声明两个int类型变量char opt[128]{0};//char型数组int i 0,tmp 0,num1,num2;//声明变量itmp,num1num2//把QString 转换成 char*QByteArray ba;//字节数组ba.append(expression);//把QString转换成QByteArraystrcpy(opt,ba.data());//data可以把QByteArray转换成char *while(opt[i]!\0||s_opt.empty()!true)//在字符串中\0用作字符串的结束标志字符串没结束且不为空的情况下{if(opt[i]0opt[i]9)//字符在0-9之间{tmptmp*10opt[i]-0;i;if(opt[i]0||opt[i]9)//字符不在0-9之间{s_num.push(tmp);tmp 0;}}else //操作符{if(s_opt.empty() true || Priority(opt[i]) Priority(s_opt.top()) ||(s_opt.top() ( opt[i] ! ))){s_opt.push(opt[i]);i;continue;}if(s_opt.top() ( opt[i] )){s_opt.pop();i;continue;}if (Priority(opt[i]) Priority(s_opt.top() || (opt[i] ) s_opt.top()) ||(opt[i]) \0 s_opt.empty() ! true)){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(num2num1); //进栈break;case -:num1 s_num.top();s_num.pop();num2 s_num.top();s_num.pop();s_num.push(num2-num1); //进栈break;case *:num1 s_num.top();s_num.pop();num2 s_num.top();s_num.pop();s_num.push(num2*num1); //进栈break;case /:num1 s_num.top();s_num.pop();num2 s_num.top();s_num.pop();s_num.push(num2/num1); //进栈break;}}else //新增解决2*37死循环时的问题{s_opt.push(opt[i]);i;continue;}}}//最后留在栈里的就是结果将结果显示ui-mainLineEdit-setText(QString::number(s_num.top())); //QString中有个静态成员函数number(),可以把数字转换成字符串。expression.clear(); } int Widget::Priority(char ch) {switch (ch){case (:return 3;case *:case /:return 2;case :case -:return 1;default:return 0;} }pop()删除栈顶元素 top() 是取出栈顶元素不会删掉栈里边的元素 二、解释 这里有个优先级函数不好理解 三个并列的条件语句 条件1if(s_opt.empty() true || Priority(opt[i]) Priority(s_opt.top()) ||                                                  (s_opt.top() ( opt[i] ! ))) //如果操作符s_opt是空或者当前操作符的优先级Priority大于栈顶的优先级或者栈顶的操作符   是‘(’ 不是 )           然后把操作符入栈 条件2if(s_opt.top() ( opt[i] )) //如果操作符是 ‘(’  不是 )            直接操作符删除 条件3if (Priority(opt[i]) Priority(s_opt.top() || (opt[i] ) s_opt.top()) ||                                              (opt[i]) \0 s_opt.empty() ! true)) //如果当前的操作符小于栈顶操作符或者操作符是(且位于栈顶或者操作符不是字符尾和不是空时   计算-*/ 例如3-11 ‘(’  满足条件1的s_opt.empty() true 刚开始时s_opt未存入任何操作符s_opt现在有‘(’‘-’满足条件1的(s_opt.top() ( opt[i] ! ))s_opt.top()(且不等于‘)’)’满足条件3的(Priority(opt[i]) Priority(s_opt.top() Priority(opt[i])是‘’的优先级0Priority(s_opt.top())是‘-’号的优先级101所有满足条件3计算3-1,结果保存在s_num2)’满足条件2删除s_opt里面的操作符‘’满足条件1的s_opt.empty() true每次计算都会pop删除栈顶的操作符所有s_opt此时为0之前存入的操作符已经被删除完‘’满足条件3的(Priority(opt[i]) Priority(s_opt.top()Priority(opt[i])是当i7时的第七个字符‘\0’的优先级是0Priority(s_opt.top())是‘’号的优先级101所有满足条件3,计算213,结果继续入栈存入s_num中 三、思路 思路理解 条件1是存入操作符 条件2在s_opt栈顶是(和当前操作符是‘)’时删除s_opt栈顶操作符 条件3判断操作符优先级当前操作符 优先级  小于  栈顶优先级时进行计算 四、死循环 出现问题运行2*37的时候报错 产生原因i无法正常加1一直在i3时循环 解决方法 else  //新增解决2*37死循环时的问题{s_opt.push(opt[i]);i;continue;}完整代码参考博客和哔站QT基础教程 w代码复现|QT快速入门 (课程来自B站)--其二_OZ__96的博客-CSDN博客
http://www.w-s-a.com/news/394906/

相关文章:

  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么
  • 手机网站维护费网站开发包括网站过程
  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网
  • 雅客网站建设做网站用什么做
  • 做宣传海报网站专业网站设计速寻亿企邦
  • 秦皇岛市住房和城乡建设局网站有关网站开发的参考文献
  • 晋城城乡建设局网站深圳外贸业务员工资
  • 招聘网站开发的公司销售运营主要做什么
  • 徐州网站无障碍建设wordpress证书
  • c语言可以做网站吗请人做网站收费多少
  • 中英双语网站怎么做网站为什么做静态
  • 毕业设计做音乐网站可以吗网站运营方案
  • windos 下做网站工具网站右侧返回顶部
  • 点餐网站怎么做济源网站建设济源
  • 嘉兴公司网站制作文明网站的建设与管理几点思考
  • 扬州公司做网站徐州网站建设优化
  • 手机网站弹出层插件有哪些wordpress 文章标签
  • 网站建设详细合同范本长沙注册公司流程与费用
  • 搜索引擎网站录入wordpress怎么修改导航
  • 业务接单网站重庆网站制
  • 绿色农产品网站景区网站建设策划方案
  • 服务器做ssr后还可以做网站吗品牌形象设计公司
  • 太原网站制作计划wordpress创建文章
  • 网站优化要怎么做seo网站关键词优化报价
  • 公司网站友情链接怎么做副链华为荣耀手机官网
  • 一条龙做网站旅游网页设计模板图凡科
  • 中山网站建设哪家便宜在中国做外国网站怎么收钱