Calculator(补)
MyGitHub
刚刚开始时确实是连题目都看不懂= =,从第二行的新建类开始,就不知题目所云。所以我的困难比很多同学都要 开始得早一些——从题目第二行开始。
准确的说,当我按照题目要求新建了一个scan类后,就不知道要做什么了QAQ。由于不熟悉,导致我不知道.h文件要些什么, .cpp又应该写什么。看了慕课
网好多遍,但似乎没有明确的解释(果然是太简单了么orz,所以在截止时间(补考15号)之前明明有时间,后面的式子拆分有想法,却一直没有勇气去写= =,一直拖到现在。)
索性没有放弃,截止时间一过,反而从容了些(捂脸,就仔细地了解 类 的定义,分文件的定义,终于不再一头雾水了。
第一个难点:头文件.h和源文件.cpp文件里应该写什么。
在网络上搜过很多相关内容,但是解释都太笼统了,“申明写在.h文件,定义实现写在.cpp文件”导致看起来似乎懂了,但是实际下手却又不知道
应该写什么,找到了两个介绍比较简洁暴力的①②:
结合我的理解:
.h文件:
#ifndef SCAN_H //SCAN_H 随便写都可以,但是为了和文件名一致最好写有意义的语句。
#define SCAN_H //和endif配对,目的为了防止重复编译出错。
class Scan
{
public:
scan();
~scan();
//我需要做的在就是这儿写下函数的声明就好了。
};
#endif
.cpp文件:
#include "sprintf.h"
Scan::Scan(){}
Scan::~Scan(){}
//在这儿写完整的函数就好了。
最后就是建立mian.cpp文件:在这个文件中,首先需要在主函数的头文件中写上include"Scan.h",将之前写的类包含进去,然后在熟悉的
int main()函数中声明这个类,如'Scan scan',这样便可以用之前熟悉的方法调用所写的函数了。
总结:之前一直不明白,能好好用一个main主函数解决的程序,非要这么复杂地绕一大圈,现在总算是尝到甜头,知道好处了:当我们所写的
代码冗杂,篇幅较长时,在一个主函数中寻找他就变得麻烦了。而分文件的写法能提高整个程序的效率,使代码高效,写程序者也能保持思路清晰。
逻辑感强烈。
由此,我的思路清晰起来:写一个scan函数将符号和数字分开 ——> 写一个print函数用于输出 ——> 然后在主函数中得到键盘输入——>调用
scan函数拆分——>得到的式子传输给print函数输出。
第二个难点:对象和
string:学过char,因此string并不难理解。参考资料:③
该博客十分详细,但是本次作业中并不需要运用到这么复杂地功能,string的运用主要是在队列中作为对队列类型的定义。唯一需要注意的是在头
文件中不应该写#include而应该写#include.
queue:在网络上盲目地百度queue的使用看得头晕,可喜的是寻找到甘霖:同样暴力简洁的资料十分可喜:
参考资料④
本次作业中,需要做的便是定义一个队列queueinput 将输入的string s 通过数字符号拆分处理用 input.push()
传进队列。队列先进先出,在print函数中用output.front()输出队列头,output.pop(),扔掉队列首,用while判断队列是否为空循环直至队列
清空。用到的队列操作函数:
申请队列:queueq;
判队空:q.empty();
获取队头元素:q.front();
入队:q.push();
出队:q.pop();
第三个难点:将数字连接成一个字符串
这个不算难点,在之前的大数运算中已有接触。逐个扫描s,如果数字的下一位还是数字(是否数字用s[i]<‘9’&&s[i]>'0'||s[i]=='.'来判
断),遇见数字或.就直接用+来将其连接,并用count计数。如果下一位是除小数点以外的符号,则结束循环,将数字字符串送进队列。当count==10,
则启用第二个队列,输出WRONG。
用到的string类函数:s.clear();清零
s=s+s1;字符串相加。
n=size(s);计算字符串长度。

参考文献:
参考资料①:.h和.cpp应该写什么
参考资料②: 同上
参考资料③:string类详解
参考资料④:queue和栈的使用
注释格式:[http://blog.csdn.net/weiwenhp/article/details/8484973]
Calculator(补)的更多相关文章
- 暴力求解Calculator:The Game
本文详实的记录的我的思考过程,类似流水账.... 目前已经烂尾,我对付不了133关后面的关卡 这个手机游戏挺不错的,就是有点难,所以要写程序,暴力的通关. 游戏名字:Calculator:The Ga ...
- Calculator 2
github地址:https://github.com/YooRarely/object-oriented.git 新增: 计算类(拥有计算功能) 采用符号优先级计算方法 对符号不匹配的如 -2 ,自 ...
- Oracle补全日志(Supplemental logging)
Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...
- Android动画效果之Tween Animation(补间动画)
前言: 最近公司项目下个版本迭代里面设计了很多动画效果,在以往的项目中开发中也会经常用到动画,所以在公司下个版本迭代开始之前,抽空总结一下Android动画.今天主要总结Tween Animation ...
- python 添加tab补全
在平时查看Python方法用到tab补全还是很方便的. 1. mac 平台 配置如下: mac是类Unix平台,需要在添加一条配置内容到bash_profile 中(默认是没有这个文件,可以新建一个放 ...
- 记录一次bug解决过程:else未补全导致数据泄露和代码优化
一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- 关于用sql语句实现一串数字位数不足在左侧补0的技巧
在日常使用sql做查询插入操作时,我们通常会用到用sql查询一串编号,这串编号由数字组成.为了统一美观,我们记录编号时,统一指定位数,不足的位数我们在其左侧补0.如编号66,我们指定位数为5,则保存数 ...
- [LeetCode] Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
随机推荐
- com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files
http://stackoverflow.com/questions/33951853/com-android-build-api-transform-transformexception-com-a ...
- style设置/获取样式的问题 和 offsetWidth/offsetHeight的问题
style设置/获取样式的问题:1.js通过style方法 --加样式:加的是行间样式 oDiv.style.width="20"+'px'; --取样式:取得是行间样 ...
- 【转】struts1.2的action参数配置
转载地址:http://chenfeng0104.iteye.com/blog/796870 <struts-config> <form-beans> ...
- mybatis框架下解决数据库中表的列的字段名和实体类属性不相同的问题
导包.... 实体类中的属性,getter,setter,tostring,构造等方法就不写了 private int id; private String orderNo; private floa ...
- GDUFE-OJ 1361校庆抽奖 翻转
Problem Description: 在舞台中央有一个开奖盒,开奖盒有一个按钮,和一个显示屏,每轮抽奖是过程是这样的. 主持人请K个幸运观众上台,编号为1~K,围着开奖盒. 首先开奖盒上随机显示一 ...
- Java SE 基础:常用关键字
Java SE 基础:常用关键字 常用关键字表
- 《.Net 的冰与火之歌》寄雁传书,你必须知道的C#参数知识大盘点
引言 参数,也叫参变量,是一个变量.在方法签名中随处可见,实现了不同方法间对于数据的寄雁传书,基本上充斥在代码的各个角落里.在方法签名或者原型中,方法名称后的括号包含方法的参数及其类型的完整列表.参数 ...
- sql-将字符串按指定字符分割插入指定表中
CREATE PROC SPLIT( @STR VARCHAR(MAX), --截取字符串 ), --截取字符 ) --存放表名 ) AS BEGIN ) IF(OBJECT_ID(@TABLE) I ...
- ubuntu一些常用的命令
1.docker里的ubuntu不知道密码,更新密码 sudo passwd 2.解压zip文件 unzip xx.zip 3.安装LAMP (1)sudo apt-get install apach ...
- iOS获取当前时间
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时 ...