信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2802|回复: 6
打印 上一主题 下一主题

[『JavaScript图文教程』] C++表达式全部拽在这就这么简单的完集了

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-6-14 21:06:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:C++ 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件中级教程 

软件教程发布日期:2017-06-14

软件教程关键字:C++表达式全部拽在这就这么简单的完集了

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 群发软件 于 2017-6-14 21:08 编辑

C++表达式全部拽在这就这么简单的完集了
将输入的表达式转化成后缀表达式,然后对后缀表达式进行运算
二、将算式转化为后缀表达式:
1、从左向右读取输入的运算符
2、若为数字将数字写入字符串A中
3、若为运算符,与栈顶的运算符比较优先级
3-1、若栈为空或为‘(’则直接压入栈中
3-2、若优先级高直接压入到栈中
3-3、若优先级低或相等则将栈顶的元素弹出并放入到A中,再与新的栈顶元素比较
4、若为括号
4-1、若为(则将其直接要入到栈中
4-2、若为)则从栈顶开始弹出元素依次放入到A中直到遇到(并删除这对括号
5、重复上述步骤直到算式读完
注:因为遇到优先级相同或更高的运算符号时要将栈顶的运算符弹出并加入到字符串中,所以相邻的运算符的数量小于等于二,所以在3-3处最多只需判断两次即可。
三、运算
1、读取刚刚转化成后缀表达式的字符串A,从左向右读取
2、若为操作数,则将其压入到栈B中
3、若为运算符,则读取并弹出栈堆上的两个元素进行运算(先出的元素为第一个元素),将结果压入到栈中成为新的栈顶元素。
4、重复上述两个步骤直到A结束,结果为栈顶元素。
C++代码
Cal.h
#ifndef CAL_H_INCLUDED#define CAL_H_INCLUDED#include<stack>#include <string>#include<iostream>using namespace std;class Cal{public :    string tran();//将输入的字符串转化成后缀表达式    double result();//运算函数public :    Cal();    Cal(string a);private:    string exp;    stack<char> oper;//存放运算符的字符串};#endif // CAL_H_INCLUDED//Cal.cpp #include "Cal.h"double Cal::result(){    string fin=tran();    stack<int> s;    for(size_t i= 0;i<fin.length();i++)    {        if(fin>='0'&&fin<='9')        {            s.push(fin-'0');        }        else if(fin=='*')        {            int a,b;            a=s.top();            s.pop();            b=s.top();            s.pop();            s.push(a*b);        }        else if(fin=='-')        {            int a,b;            a=s.top();            s.pop();            b=s.top();            s.pop();            s.push(a-b);        }        else if(fin=='+')        {            int a,b;            a=s.top();            s.pop();            b=s.top();            s.pop();            s.push(a+b);        }        else if(fin=='/')        {            double a,b;            a=s.top();            s.pop();            b=s.top();            s.pop();            if(b!=0)                s.push(b/a);        }    }    return s.top();}string Cal::tran(){    string a;    for(size_t i = 0; i < exp.length(); i++)    {        if(exp>='0'&&exp<='9')        {            a+=exp;         }        else if(exp=='+'||exp=='-')        {            if(oper.empty()||oper.top()=='(')            {                oper.push(exp);            }            else if(oper.top()=='+'||oper.top()=='-')            {                a+=oper.top();                oper.pop();                oper.push(exp);            }            else if(oper.top()=='*'||oper.top()=='/')            {                a+=oper.top();                oper.pop();                if(!oper.empty())                {                    a+=oper.top();                    oper.pop();                }                oper.push(exp);            }        }        else if(exp=='*'||exp=='/')        {            if(oper.empty()||oper.top()=='(')            {                oper.push(exp);            }            else if(oper.top()=='+'||oper.top()=='-')            {                oper.push(exp);            }            else if(oper.top()=='*'||oper.top()=='/')            {                a+=oper.top();                oper.pop();            }        }        else if(exp=='(')        {            oper.push(exp);        }        else if(exp==')')        {            while(oper.top()!='(')            {                a+=oper.top();                oper.pop();            }            oper.pop();        }    }    while(!oper.empty())    {        a+=oper.top();        oper.pop();    }    return a;}Cal::Cal(string a) : exp(a){} #include  < iostream> #include "Cal.h"using namespace std;int main(){    string s;    while((cin >> s)!=NULL)    {        Cal c(s);    cout << c.result() << endl;    }    return 0;}
“`
注:
1、将字符串转换成数字的时候要减’0’。
2、进行除法运算的时候栈顶的元素为除数,下一个元素才是被除数
3、本代码是参考网上大神代码写的有非常非常多的不足(比如没有对/0进行进一步处理,只能进行int的运算等),仅供初学STL栈的新人参考,如有不足见谅

 昨天晚上,我花了大把的时间研究里面二叉树应用解决计算表达式的问题,一直就没理解,主要是觉得是不是自己错了,又懒,不愿意自己把代码敲到电脑里看看,结果浪费了很多时间。所以还是提醒大家,代码这种东西,有什么好多看的,觉得他错了就自己敲到电脑里去看看!其实也没错太多,就是少了一些东西,导致原代码里的括号完全没有意义,也就是说,书中的代码虽然考虑到了计算表达式中的括号,却什么都没有做,而这其实只要稍稍改进:加一个flag存储上次读到的char,如果是‘)’的话,就要把左式当成运算数来计算。
  好了,把正确的代码贴在下面:
  #include <iostream>
  using namespace std;
  class calc
  {
  enum Type {DATA, ADD, SUB, MULTI, DIV, OPAREN, CPAREN, EOL};
  struct node
  {
  Type type;
  int data;
  node *lchild, *rchild;
  node(Type t, int d=0, node *lc=NULL, node *rc=NULL)
  {
  type=t; data=d; lchild=lc; rchild=rc;
  }
  };
  node *root;
  node *create(char * &s);
  Type getToken (char * &s, int &value);
  int result (node *t);
  public:
  calc (char *s) {root=create(s);}
  int result() {if (root==NULL) return 0;
  return result(root);}
  };
  calc::node *calc::create(char * &s)
  {
  node *p, *root=NULL;
  Type returnType,flag=DATA;
  int value;
  while (*s)
  {
  flag=returnType;
  returnType=getToken(s,value);
  switch (returnType)
  {
  case DATA:
  case OPAREN:
  if (returnType == DATA) p=new node(DATA,value);
  else p=create(s);
  if (root==NULL) root=p;
  else if (root->rchild==NULL) root->rchild=p;
  else root->rchild->rchild=p;
  break;
  case CPAREN:
  case EOL: return root;
  case ADD:
  case SUB:
  root=new node(returnType,0,root);
  break;
  case MULTI:
  case DIV:
  if (root->type==DATA || root->type==MULTI || root->type==DIV || flag==OPAREN)
  root=new node(returnType,0,root);
  else root->rchild=new node(returnType,0,root->rchild);
  }
  }
  return root;
  }
  calc::Type calc::getToken(char *&s, int &data)
  {
  char type;
  while (*s==' ') ++s;
  if (*s>='0' && *s<='9')
  {
  data=0;
  while (*s>='0' && *s<='9') {data=data*10+ *s-'0'; ++s;}
  return DATA;
  }
  if (*s == '\0') return EOL;
  type =*s; ++s;
  switch(type)
  {
  case '+':return ADD;
  case '-':return SUB;
  case '*':return MULTI;
  case '/':return DIV;
  case '(':return OPAREN;
  case ')':return CPAREN;
  default: return EOL;
  }
  }
  int calc::result(node *t)
  {
  int num1,num2;
  if (t->type == DATA) return t->data;
  num1=result(t->lchild);
  num2=result(t->rchild);
  switch(t->type)
  {
  case ADD:t->data=num1+num2;break;
  case SUB:t->data=num1-num2;break;
  case MULTI: t->data=num1*num2;break;
  case DIV:t->data=num1/num2;break;
  }
  return t->data;
  }
  int main()
  {
  char equation[256];
  cin>>equation;
  //calc exp("3*(2+(6/2))");
  calc exp(equation);
  cout<<exp.result()<<endl;
  return 0;
  }


unto易发信息B2B平台自动群发帖子软件next认真学一学C++元素命名的重点难点都在这一目了然了
回复

使用道具 举报

0

主题

649

帖子

639

积分

积分
639
信息发布软件沙发
发表于 2017-6-18 08:35:13 | 只看该作者
,很高端的视觉效应,很耐心,设计的很不错,高端大气上档次啊!技术人员很给力,专业的就是专业的,为卖家耐心热情的服务态度点个赞!下次有需要还会来!~

回复 支持 反对

使用道具 举报

0

主题

641

帖子

635

积分

积分
635
推广工具板凳
发表于 2017-6-23 01:49:27 | 只看该作者
宝买的最超值的虚拟物品了吧。大赞。给077号客服一个好评,休假都还给我改需求。而且速度超快,刚说完的改动需求,不到5分钟就搞定了。顺便给我的网站打个广告,手赚咖shouzhuanka.com各种手机赚钱方式。

回复 支持 反对

使用道具 举报

0

主题

604

帖子

608

积分

积分
608
软件定制开发地板
发表于 2017-6-28 15:32:38 | 只看该作者
平台很好用,功能够强大,关键是物美价廉,且有后期技术指导。

回复 支持 反对

使用道具 举报

0

主题

609

帖子

591

积分

积分
591
5#定制软件#
发表于 2017-7-4 17:04:15 | 只看该作者
衍了事的嫌疑

回复 支持 反对

使用道具 举报

0

主题

623

帖子

612

积分

积分
612
6#定制软件#
发表于 2017-7-5 05:02:25 | 只看该作者
好,页面设计很满意,而且也很快,非常有效率,第一次买,遇到这么好的卖家,这么高效的服务,真的太幸运了,太谢

回复 支持 反对

使用道具 举报

0

主题

594

帖子

586

积分

积分
586
7#定制软件#
发表于 2017-7-12 02:51:00 | 只看该作者
来的,挺满意的,客服也比较也耐心~回头会介绍人过来的

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:
信息发布软件AIWROK软件用图找图示例templateMat方法
AIWROK软件用图找图示例templateMat方法
信息发布软件苹果JS代码运行时[selfRunTime]小结
苹果JS代码运行时[selfRunTime]小结 方法一:stop 停止运行[/backcolor]方法二:runOnUIThread ui 线程中运行函数[/backcolor]

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-3 02:05 , Processed in 0.419551 second(s), 56 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表