技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1697|回复: 8
收起左侧

【探讨- 编程】windows系统自带的科学型计算器实现难点有.....

[复制链接]

35

主题

180

帖子

1770

积分

用户组: 管理员

UID
8
精华
1
威望
14 点
宅币
1533 个
贡献
24 次
宅之契约
0 份
在线时间
247 小时
注册时间
2014-1-27
发表于 2014-2-26 14:17:18 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x

      目前自己还没有实现过,不知道学习重点应该放在什么地方,毕竟有大伙在这里,我就偷偷懒走走捷径。
      这里的实现难点可以理解为实现细节,大伙能不能一针见血的说明其关键处,这就对我莫大帮助了。
      我喜欢把需要的东西都学了,才开始动手写代码。虽然没有挑战性,不过对于不熟悉又要完善的人来讲,不容易的却是自身的局限问题,也是我问题的缘由。


      有几个主要方面事情要做和学习:

           1.  界面设计             【 #api function     #多线程     #windows可移植    】
           2.  功能函数库         【 #math.h       #algorithms 】
           3.  字符串处理         【 #输入判断&检测       #数据类型】
           4.  性能测试            【  #内存使用率     #编译链接】  


      再加上相应的算法和数据结构,是不是没有其他什么需要去学习和注意的地方了,对于新手来讲的话。
      我没有软件开发经验,大伙多多指点。


      ①占用越小,程序可以更快运行。

1038

主题

2310

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
217
威望
287 点
宅币
17895 个
贡献
35959 次
宅之契约
0 份
在线时间
1713 小时
注册时间
2014-1-26
发表于 2014-2-26 14:27:51 | 显示全部楼层
我觉得难点是对运算表达式的处理。什么括号、函数这些,都是要实现处理的。
我觉得一个比较好的方法是根据运算优先级先用树状结构来分析一个表达式,然后再把这个树一级一级算上去。
此外计算器的界面不是难点,GDI也好GDI+也好SDL也好DX也好GL也好只要用着顺手都行。控件自己画。
性能也不是重点……
界面设计这个应该也是需要处理的。怎样让界面好用,接收键盘快捷键,以及误操作处理,都要考虑到的。
关键是你的程序要能自动从剪贴板获取表达式数据(就是能识别Ctrl+C和Ctrl+V的组合键)

10

主题

41

帖子

159

积分

用户组: 小·技术宅

UID
87
精华
1
威望
2 点
宅币
109 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-2-26
发表于 2014-2-26 17:10:09 | 显示全部楼层
扒了一篇别人设计计算器的论文传上来参考

李晓奇_丁健华_吴继超等MFC计算器课程设计报告.pdf

532.5 KB, 阅读权限: 10, 下载次数: 5

售价: 1 个宅币  [记录]

0

主题

1

帖子

15

积分

用户组: 初·技术宅

UID
4049
精华
0
威望
2 点
宅币
10 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2018-7-14
发表于 2018-7-14 10:22:24 | 显示全部楼层
大数运算。
回复

使用道具 举报

0

主题

72

帖子

166

积分

用户组: 小·技术宅

UID
1291
精华
0
威望
2 点
宅币
89 个
贡献
1 次
宅之契约
0 份
在线时间
2 小时
注册时间
2015-11-25
发表于 2018-9-16 17:24:54 | 显示全部楼层
回复

使用道具 举报

1

主题

9

帖子

260

积分

用户组: 中·技术宅

UID
4533
精华
1
威望
23 点
宅币
150 个
贡献
50 次
宅之契约
0 份
在线时间
4 小时
注册时间
2018-12-5
发表于 2018-12-5 19:21:37 | 显示全部楼层
先开始动手最重要。
Windows的计算器不支持表达式运算,那个才是有点麻烦的东西。

关于表达式运算,我有一篇旧文:https://blog.csdn.net/tomwillow/article/details/50956417

1038

主题

2310

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
217
威望
287 点
宅币
17895 个
贡献
35959 次
宅之契约
0 份
在线时间
1713 小时
注册时间
2014-1-26
发表于 2018-12-6 01:17:30 | 显示全部楼层
汤忤柳 发表于 2018-12-5 19:21
先开始动手最重要。
Windows的计算器不支持表达式运算,那个才是有点麻烦的东西。


求搬运,或者求许可被搬运

1

主题

9

帖子

260

积分

用户组: 中·技术宅

UID
4533
精华
1
威望
23 点
宅币
150 个
贡献
50 次
宅之契约
0 份
在线时间
4 小时
注册时间
2018-12-5
发表于 2018-12-6 13:43:47 | 显示全部楼层
0xAA55 发表于 2018-12-6 01:17
求搬运,或者求许可被搬运

承蒙厚爱,晚上我整理整理再发出来~

1

主题

27

帖子

131

积分

用户组: 小·技术宅

UID
2054
精华
0
威望
2 点
宅币
100 个
贡献
0 次
宅之契约
0 份
在线时间
14 小时
注册时间
2016-11-10
发表于 2019-1-16 08:09:31 | 显示全部楼层
这个刚好前两天写个安卓作业的时候(其实是当个程序的裁缝)做的计算器,当时有这个功能(倒不如说csdn上的源码有这个功能)
本来想自己也造个轮子不过之前没写过java一个个查文档太蛋疼,当然主要还是因为期末还没考完
anyway,主要代码还是看了一遍,其实这个问题就是要把输入的中缀表达式转成后缀表达式,这样只要遍历一遍后缀表达式,每次遇到一个运算符就把前两个数替换为当前运算的数就行了(当然仅限于二元运算符)
例子: (10+2)*3/(5+1)
转为后缀  10 2 + 3 * 5 1 + /
运算过程  12 3 * 5 1 + /
          36 5 1 + /
          36 6 /
          6
至于怎么转后缀这篇文章感觉讲的不错
http://www.nowamagic.net/librarys/veda/detail/2307
然后参考(chao)的代码链接是这个
https://blog.csdn.net/sakurakider/article/details/76283801

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-6-19 13:19 , Processed in 0.112866 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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