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

怎样制定一个网站建设方案那个网站可以兼职做效果图

怎样制定一个网站建设方案,那个网站可以兼职做效果图,邮票上的化学史网站开发,网站里添加斗鱼直播的视频怎么做文章目录 题目一、分析1.1表达式预处理1.2中缀表达式转后缀1.3 后缀表达式计算结果 二、答案 题目 一、分析 通过利用栈将中缀表达式转换为后缀表达式#xff0c;在根据后缀表达式计算运算结果。由于包含负数操作数的情况#xff0c;并且操作数位数不固定为1#xff0c;因此… 文章目录 题目一、分析1.1表达式预处理1.2中缀表达式转后缀1.3 后缀表达式计算结果 二、答案 题目 一、分析 通过利用栈将中缀表达式转换为后缀表达式在根据后缀表达式计算运算结果。由于包含负数操作数的情况并且操作数位数不固定为1因此需要对输入的表达式进行预处理将操作数和操作符进行分离并且将大括号和中括号统一为小括号。 1.1表达式预处理 /// summary /// 预处理表达式 /// /summary /// param namedata中缀表达式/param /// returns表达式/returns std::vectorstd::string pretreat(const std::string data) {std::string value data;//-处理括号for (int i 0; i value.size(); i){if (value[i] [ || value[i] {) value[i] (;if (value[i] ] || value[i] }) value[i] );}//-处理负数,并将运算符与运算数拆分开value ( value ); int index -1;std::vectorstd::string content;for (int i 0; i value.size(); i){//-负数操作数的情况if (value[i] - (i - 1) 0 value[i - 1] ( (i 1) value.size() value[i 1] 0 value[i 1] 9){index i;continue;}//-非负数操作数else if (value[i] 0 value[i] 9 index -1){index i;}if ((value[i] 0 || value[i] 9) index ! -1){content.push_back(value.substr(index, i - index));index -1;}if ((value[i] 0 || value[i] 9) index -1){content.push_back(value.substr(i, 1));}}return content; }1.2中缀表达式转后缀 1.2.1 对于中缀表达式AB*(C-D)-E/F转后后缀表达式时栈中数据变化情况如下。 1.2.2 栈内和栈外操作符的优先级如下。 std::mapstd::string, int isp { {#,0}, {(,1}, {*,5}, {/,5}, {,3}, {-,3}, {),6} };//-栈内操作符的优先级 std::mapstd::string, int icp { {#,0}, {(,6}, {*,4}, {/,4}, {,2}, {-,2}, {),1} };//-栈外操作符的优先级1.2.3 代码逻辑伪代码如下可根据此变化设计代码逻辑。 步扫描项项类型动作栈变化输出0“#”进栈#1A操作数#A2操作符isp[“#”] icp[“”],进栈#A3B操作数#AB4*操作符isp[“”] icp[“*”],进栈#*AB5(操作符isp[“*”] icp[“(”],进栈#*(AB6C操作数#*(ABC7-操作符isp[“(”] icp[“-”],进栈#*(-ABC8D操作数#*(-ABCD9)操作符isp[“-”] icp[“)”],退栈#*(ABCD-”(“ “)”,退栈#*ABCD-10-操作符isp[“*”] icp[“-”],退栈#ABCD-*isp[“”] icp[“-”],退栈#ABCD-*isp[“#”] icp[“-”],进栈#-ABCD-*11E操作数#-ABCD-*E12/操作符isp[“-”] icp[“/”],进栈#-/ABCD-*E13F操作数#-/ABCD-*EF14#操作符isp[“/”] icp[“#”],退栈#-ABCD-*EF/操作符isp[“-”] icp[“#”],退栈#ABCD-*EF/-结束 /// summary /// 判断是否是操作数 /// /summary /// param namevalue/param /// returns/returns bool isDigit(std::string value) {if (value.empty())return false;return value.back() 0 value.back() 9; }/// summary /// 将中缀表达式转换为后缀表达式 /// /summary /// param namedata中缀表达式/param /// returns后缀表达式/returns std::vectorstd::string postfix(std::vectorstd::string content) {//-定义栈内操作符和栈外操作符的优先级std::mapstd::string, int isp { {#,0}, {(,1}, {*,5}, {/,5}, {,3}, {-,3}, {),6} };//-栈内操作符的优先级std::mapstd::string, int icp { {#,0}, {(,6}, {*,4}, {/,4}, {,2}, {-,2}, {),1} };//-栈外操作符的优先级content.push_back(#);int index 0;std::vectorstd::string expression;std::string item1 #, item2, item3;std::stackstd::string stack;stack.push(item1);item1 content[index];index;while (!stack.empty() item1 ! #){if (isDigit(item1)){expression.push_back(item1);item1 content[index];index;}else{item2 stack.top();if (isp[item2] icp[item1]){stack.push(item1);item1 content[index];index;}else if (isp[item2] icp[item1]){expression.push_back(stack.top());item3 stack.top();stack.pop();}else{std::string item stack.top();stack.pop();if (item (){item1 content[index];index;}}}}return expression; }1.3 后缀表达式计算结果 1.3.1 计算后缀表达式ABCD-*EF/-栈中元素变化情况逻辑如下。 步扫描项项类型动作栈中内容1栈置空空2A操作数进栈A3B操作数进栈AB4C操作数进栈ABC5D操作数进栈ABCD6-操作符D、C退栈计算C-D结果R1进栈ABR17*操作符R1、B退栈计算B*R1结果R2进栈BR28操作符R2、B退栈计算AR2结果R3进栈R39E操作数进栈R3E10F操作数进栈R3EF11/操作符F、E退栈计算E/F结果R4进栈R3R412-操作符R4、R3退栈。计算R3-R4结果R5进栈R5 /// summary /// 根据后缀表达式计算结果 /// /summary /// param nameexpression/param /// returns/returns float calculator(std::vectorstd::string expression) {std::stackfloat values;for (int i 0; i expression.size(); i){std::string value expression[i];if (isDigit(value)){values.push(std::atoi(value.c_str()));}else{float value1 values.top(); values.pop();float value2 values.top(); values.pop();switch (value[0]){case : values.push(value2 value1); break;case -: values.push(value2 - value1); break;case *: values.push(value2 * value1); break;case /: values.push(value2 / value1); break;default:break;}}}return values.top(); }二、答案 #include iostream #include stack #include string #include vector #include map/// summary /// 判断是否是操作数 /// /summary /// param namevalue/param /// returns/returns bool isDigit(std::string value) {if (value.empty())return false;return value.back() 0 value.back() 9; }/// summary /// 将中缀表达式转换为后缀表达式 /// /summary /// param namedata中缀表达式/param /// returns后缀表达式/returns std::vectorstd::string postfix(std::vectorstd::string content) {//-定义栈内操作符和栈外操作符的优先级std::mapstd::string, int isp { {#,0}, {(,1}, {*,5}, {/,5}, {,3}, {-,3}, {),6} };//-栈内操作符的优先级std::mapstd::string, int icp { {#,0}, {(,6}, {*,4}, {/,4}, {,2}, {-,2}, {),1} };//-栈外操作符的优先级content.push_back(#);int index 0;std::vectorstd::string expression;std::string item1 #, item2, item3;std::stackstd::string stack;stack.push(item1);item1 content[index];index;while (!stack.empty() item1 ! #){if (isDigit(item1)){expression.push_back(item1);item1 content[index];index;}else{item2 stack.top();if (isp[item2] icp[item1]){stack.push(item1);item1 content[index];index;}else if (isp[item2] icp[item1]){expression.push_back(stack.top());item3 stack.top();stack.pop();}else{std::string item stack.top();stack.pop();if (item (){item1 content[index];index;}}}}return expression; }/// summary /// 预处理表达式 /// /summary /// param namedata中缀表达式/param /// returns表达式/returns std::vectorstd::string pretreat(const std::string data) {std::string value data;//-处理括号for (int i 0; i value.size(); i){if (value[i] [ || value[i] {) value[i] (;if (value[i] ] || value[i] }) value[i] );}//-处理负数,并将运算符与运算数拆分开value ( value ); int index -1;std::vectorstd::string content;for (int i 0; i value.size(); i){//-负数操作数的情况if (value[i] - (i - 1) 0 value[i - 1] ( (i 1) value.size() value[i 1] 0 value[i 1] 9){index i;continue;}//-非负数操作数else if (value[i] 0 value[i] 9 index -1){index i;}if ((value[i] 0 || value[i] 9) index ! -1){content.push_back(value.substr(index, i - index));index -1;}if ((value[i] 0 || value[i] 9) index -1){content.push_back(value.substr(i, 1));}}return content; }/// summary /// 根据后缀表达式计算结果 /// /summary /// param nameexpression/param /// returns/returns float calculator(std::vectorstd::string expression) {std::stackfloat values;for (int i 0; i expression.size(); i){std::string value expression[i];if (isDigit(value)){values.push(std::atoi(value.c_str()));}else{float value1 values.top(); values.pop();float value2 values.top(); values.pop();switch (value[0]){case : values.push(value2 value1); break;case -: values.push(value2 - value1); break;case *: values.push(value2 * value1); break;case /: values.push(value2 / value1); break;default:break;}}}return values.top(); }int main() {std::string data;std::cin data;std::vectorstd::string content pretreat(data);std::vectorstd::string expression postfix(content);std::cout calculator(expression);return 0; }
http://www.eeditor.cn/news/122697/

相关文章:

  • 分类网站建设网站的设计过程
  • 网站做程序cms建站模板下载
  • 医院网站备案二级域名解析网
  • 做的网站底部应该标注什么制作应用的网站
  • 汽车最专业的网站建设东莞网站推广服务
  • 如何做论坛网站 知乎上海做推广网站
  • 网络规划设计师可以同时报名吗专业网站优化
  • 网站要怎么做的吗网站备案中更名
  • 网站进度条wordpress换空间后内页全部404
  • 上海网站建设改版短网址 wordpress
  • 黑龙江省网站备案微信公众平台小程序官网
  • 做网站所用的语言网站的分辨率
  • 百度如何推广网站android软件开发
  • 网站建设主机耗电量义乌公司网站制作
  • 网站建设需要哪些硬件WordPress自动readmore
  • 百度给做网站吗如何做好网页设计
  • 做太空泥的几分钟网站怎么看百度指数
  • 定制型网站制作酒店预订网站建设
  • 西安企业建站费用做网站虚拟主机
  • 网络营销就是建立企业网站沈阳百度广告
  • 鞍钢节能公司网站开发建立网站内容
  • 网站建设竞品分析自己怎么做dj 视频网站
  • 郑州网站建设 易云互联网页设置
  • 中山市交通建设发展集团网站成都建设网站高级工程师查询
  • 外管局网站 报告怎么做网站怎么做下载网页代码吗
  • 网站建设流程及细节上海著名网站建设
  • 网站建设提供的网站资料wordpress的文要登录才能看
  • 企业网站建设实训心得长沙自动seo
  • 旅游网站排行榜前十名官网销售类网站模板
  • 做网站 傻瓜软件怎么做网店运营