女朋友学高数,我花了 15 分钟用栈给她写了一个计算器 | 原力计划

作者 | 天才程序YUAN

责编 | 夕颜

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

前记

女朋友说:“高数好难,看我最近挺辛苦的,你送我一个礼物给我,让我开心一下吧。你猜猜我想要什么。”

我想了半天,从书到鞋子到电子产品最后到生活用品,感觉什么都不缺,然后和她说:“你说要送啥,我就送啥吧”

她坚持要我猜:“不行,你一定要说一个礼物,并且这个礼物要你亲手做的”

于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想让我送东西,那我帮你写一个计算器吧”

文章的标题只是噱头,作为热爱交流技术的学习者,我们应该脚踏实地,所以我会保证文章的内容都是干货!

设计原理

根据输入中缀算术表达式,利用栈帧结构,实现转换成后缀表达式输出,再对该后缀表达式求值计算输出结果。最终设计出一个计算器。

适用范围:+ - * / % 整数 小数 负数

设计思想

逻辑设计

1. 建立两个栈,栈stack和栈Node

  • stack栈用于储存字符数组,以字符形式存储中缀表达式的元素。

  • Node栈用于储存双精度浮点型的数组,用于存储中缀表达式的元素值和各元素运算操作后的值。

2. 设计以下两个函数和相应的入栈出栈操作。


Mtf_function()函数设计

(栈为stack)

(1)如果遇到操作数,直接将其输出。

(2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时将其放入栈中。

(3)如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。

(4)如果遇到任何其他的操作符,如(“+”, “*”,“(”)等,从栈中弹出元素直到遇到发现更低优先级的元素(或者栈为空)为止。弹出完这些元素后,才将遇到的操作符压入到栈中。有一点需要注意,只有在遇到" ) “的情况下我们才弹出” ( “,其他情况我们都不会弹出” ( "。

(5)如果读到了输入的末尾,则将栈中所有元素依次弹出。

Caculate()函数设计

(栈为Node栈)

1)遍历表达式,遇到的数字首先放入栈中

2)接着读到运算操作符如“+”,则弹出栈顶元素和下一个元素,执行相应的运算操作,并将计算结果压入到栈中。

3)读到下一个元素,将其直接放入栈中。

4)读到下一个元素如“”,弹出栈顶元素和下一个元素,执行85,执行相应的运算操作,并将计算结果压入到栈中……以此类推。最后求的值存在栈顶上。

对于小数点的处理算法

  1. 原理:先将小数化为整数,然后除以10的相应权重。建立一个循环,令小数的值sum初始化0,10的相应权重j=0,判断小数点后的字符数组元素是否属于0-9,若是,将小数点后移,sum = sum * 10 + 元素所对应的值,10的相应权重j加一,直到下一个元素不属于0-9。

  2. 具体算法如下

对于负号的处理

负号的出现位置是字符数组的第一个元素或左括号后面的元素。为避免与减号“-”混淆,通过判断字符数组的第一个元素或左括号后面的元素是否为“-”找出负号,并替换成“M”。中缀转后缀时若元素为“M”则输出“-”。计算后缀的值时若元素为“M”,则之后的元素值(包括小数)转换为相反数后进行操作。

主程序流程图和各模块调用关系

物理设计

1. 基于在内存开辟连续存储空间数组实现,C声明定义字符栈帧结构,包含字符数组,用于中缀转后缀表达式

2. 相应的节点的含义

3. 进出栈操作

4. C声明定义整型栈帧结构,包含整型数组,用于计算后缀表达式求值。

5. 相应的节点的含义

6. 进出栈操作

测试

1. 测试用例

2. 测试结果

源代码(带注释)

代码写的是C语言版,后续有时间会补上java版

github代码链接:https://github.com/1170300826

原文链接:

https://blog.csdn.net/JAck_chen0309/java/article/details/104841005

作为“百万人学AI”的重要组成部分,2020 AIProCon 开发者万人大会将于6月26日通过线上直播形式,让开发者们一站式学习了解当下 AI 的前沿技术研究、核心技术与应用以及企业案例的实践经验,同时还可以在线参加精彩多样的开发者沙龙与编程项目。参与前瞻系列活动、在线直播互动,不仅可以与上万名开发者们一起交流,还有机会赢取直播专属好礼,与技术大咖连麦。

 

评论区留言入选,可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。  快来动动手指,写下你想说的话吧

 

推荐阅读 

☞华为集齐 AI 龙珠,“召唤神龙”为期不远

☞中国无人机“老炮儿”回忆录

☞京东商城背后的AI技术能力揭秘 - 基于关键词自动生成摘要

☞互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家

☞从未如此简单:10分钟带你逆袭Kafka!

☞无代码时代来临,程序员如何保住饭碗?

你点的每一个在看,我认真当成了喜欢

点击阅读原文,参与报名!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72912.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当女同学问我计算机能力高低时,我在想些什么

###大一联谊的时候认识的一个妹子,人力资源管理的,可能是她们老师在谈薪酬的时候举了计算机行业的例子(钱很多,www,我是个小菜比),于是跑过来问我怎么判断一个程序员能力高低,于是乎…

一个班37人考进清华北大,老师发来一则短信,家长都沉默了!

一位班主任发给家长的一则短信:“无论成绩好坏,请想想:每个孩子都是种子,只不过每个人的花期不同。有的花,一开始就灿烂绽放;有的花,需要漫长的等待。不要看着别人怒放了,自己的那棵…

笑话:​计算机系的男同学追班里一女同学,结果此女总是躲躲闪闪。男的看没戏,就另找了一个去追,结果这女的不满意了...

计算机系的男同学追班里一女同学,结果此女总是躲躲闪闪。 男的看没戏,就另找了一个去追,结果这女的不满意了,质问这男的为啥抛弃她。 男的问:“请教一个电脑问题,如果你点击一个程序,总是提示‘…

一个计算机系学生的第一篇博客

首先,欢迎关注我的github 文章目录 1. 我为什么要写博客2. 我打算如何去写博客3. 深夜感慨 首先自我介绍一下,我是中国人民大学信息学院的学生,专业为数据科学与大数据技术,日常使用最多的编程语言为Python和C,大部分…

刚刚,陶哲轩惨遭3个物理学家狠狠打脸,一条数学公式或将引起教科书改革

这波操作 把数学界都炸懵了 就在刚刚, 3 位物理学家联合数学天才、菲尔兹奖得主陶哲轩,彻底炸翻了数学界。 左往右,彼得丹顿、斯蒂芬帕克、张西宁 彼得丹顿(Peter B.Denton),美国布鲁克黑文国家实验室的助理…

希望计算机专业学生都知道这些宝藏老师

今天给大家分享一些计算机专业的宝藏老师,这些都是名师,听他们的课程一点不枯燥,跟着名师学学起来事半功倍! 1、 c语言——翁凯老师,郝斌老师 翁凯老师是浙江大学的老师,讲的很细致,学他的课,…

希望计算机专业同学都知道这些宝藏老师

给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索&#xf…

进展-《IT男潘加宇:老婆在孩子班级群里怒怼数学老师》-是的,我是用软件开发思维来做这个事情

《IT男潘加宇:老婆在孩子班级群里怒怼数学老师》的链接>> 一、引爆点:表扬垃圾分类 首先要说清楚的,《IT男潘加宇:老婆在孩子班级群里怒怼数学老师》一文(以下简称《怒怼》)的起因并不是"我孩…

希望计算机专业同学都知道这些博主

湖科大教书匠——计算机网络 “宝藏老师”、“干货满满”、“羡慕湖科大”…这些都是网友对这门网课的评价,可见网课质量之高!最全面的面试网站 湖南科技大学《计算机网络》微课堂是该校高军老师精心制作的视频课程,用简单的语言描述复杂的…

希望计算机专业同学都知道这些老师

C语言教程——翁凯老师、赫斌 翁恺老师是土生土长的浙大码农,从本科到博士都毕业于浙大计算机系,后来留校教书,一教就是20多年。 翁恺老师的c语言课程非常好,讲解特别有趣,很适合初学者学习。 郝斌老师的思路是以初学…

2023 USNews全美计算机研究生院排名发布!MIT、CMU分别称霸总榜和AI分榜

来源:新智元 3月29日,2023 U.S.News全美研究生院排名正式发布。 今年除了以往的商科、法律、医学、护理、工程和教育这6大学科以外,还新增了纯粹依据学术专家对项目进行打分的排名。 没错,说的就是计算机科学。 当然,其…

美国计算机专业排名前50公立大学,US News排名前50的大学里,计算机好的有哪些?(本科)...

堪萨斯州立大学成立1863年,是该州第一所公立大学。2009年Usnews 美国大学综合排名第130。 .... 全美公立大学排名前50位,工程类专业排名前10位。全美第8安全的校园。 .... 克利夫兰州立大学是俄亥俄州最具多样化的公立大学,提供优质的本科课程…

美国大学 计算机科学 排名,美国大学本科计算机专业排名TOP50榜单介绍

要说去美国留学最热门的专业是什么?那一定是计算机专业,不仅很多学生研究生阶段去美国学习计算机专业,还有很多学生本科就就开始去美国留学了,那么美国本科阶段的计算机专业比较好的大学有哪些?下面一起看一下美国大学…

专业排名全美top6|建筑学硕士学历CSC获批顺利赴美

E老师人文社科背景,二本院校任教,硕士毕业,没有英文文章,且申请周期只有一个月。据此我们提出,以赶上CSC申报为前提,尽量申请美国综合或者专业排名靠前的学校。最终我们助E老师获得美国专业排名TOP6的弗吉尼…

2023USNews全美大学排名出炉!哥大暴跌16名,藤校教育遭质疑

视学算法报道 编辑:武穆 桃子 【导读】USNews全美大学2023排名近日公布,其中哥伦比亚大学从第2名跌到第18名。由此,在美国的高校圈里引发了诸多争议。 USNews全美大学2023排名公布了! 9月12日,世界最权威排名机构之一…

《美国新闻与世界报道》公布新年度最佳大学排名:普林斯顿第一,哥大跌出前十 | 美通社头条...

美通社消息:全球教育排名权威机构《美国新闻与世界报道》公布了"2022年至2023年最佳大学排名"。该排名根据多达17项学术质量指标对1500所院校和大学进行了评估,排名结果可作为预备学生及其家长的选校指南。 今年的排名包括: 更全面…

NVIDIA重磅发布NVAIE 3.0,AI时代的操作系统来了

文|卖萌酱 近年来,AI技术发展迅速,随着以Pytorch、TensorFlow为代表的深度学习框架的成熟,AI模型的训练流程已经变得相对清晰、成熟。然而,预训练模型和后续一系列超大模型的出现,使得对于大部分AI开发者和…

OpenAI+LangChain+Redis

近期研究langchain持久化问题踩过的一些坑 1.redis版本必须在4.0以上 2.本机启动 需下载redis stack 系列(涵盖redisearch) 本机带不起大概需本机安装docker,单独部署redis 目前官方仅给到docker部署方法 redisearch官方文档 3.当使用la…

让ChatGPT成为你的人工智能好友

让Chat GPT成为你的人工智能好友 🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。 💻微信公众号:微笑的段嘉许 📌本文由微笑的段嘉许原创! &…

第三方接口开发(短信验证码)

第三方接口开发(短信验证码) ① 打开百度的API Store(API仓库),网址:http://apistore.baidu.com/,找到一下接口: ② 分析凯信通接口API 分析可知,短信接口是使用GET请求进行发送的&#xff0…