附加作业题目

第三次作业

mygithub:sonnypp

这是开学来第一次写随笔,这一次的作业是对上一次作业的修改,对于上一次作业,在学长老师的帮助下,我重新修改了下代码,将.h文件分成了一个Scan类文件和一个Print类文件,虽然这样看起来没什么变化,但是这看起来就比较清晰明了。

修改后的代码主要是以下这些:

在.cpp中main 函数中的主要代码是:

/************************************************************
文件名:calculator.cpp
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng
作用:处理字符串,并且输出数据
***********************************************************/ #include<iostream>
#include<string>
#include "Scan.h"
#include "Print.h"
using namespace std; int main()
{
/*创建一个Scan类的对象 a;*/
Scan a; /*创建一个Print类的对象 b;*/
Print b; /*声明字符串 ;*/
string input; /* 输入字符串 ;*/
cin >> input; /*调用Scan类中的方法处理字符串;*/
a.ToStringQueue(input); /*调用Print类中的方法输出队列;*/
b.PrintStringQueue(); return 0;
}

在Scan类的文件里,主要代码是:

#ifndef __SCAN_H__
#define __SCAN_H__ #include<iostream>
#include<string>
#include<queue>
using namespace std;
int count=0; /*创建全局变量,来计算一个数的有几位数*/
queue<string>key;/*设全局的队列queue*/ /************************************************************
文件名:Scan.h
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng
作用:处理main函数传来的数据
***********************************************************/ //创建Scan的类
class Scan
{
/*定义一个处理字符串的函数*/
public:
void ToStringQueue(string input);
}; //对函数进行封装
void Scan::ToStringQueue(string input)
{
int l=input.length(); /*测出字符串的长度*/
string tmp="";
for (int i=0; i<l; i++)
{
/*如果数字的位数超过10 就产生错误;*/
if (count>10)
{
cout<<"Error"<<endl;
break;
}
/*判断是否有字符*/
if (input[i]=='-' || input[i]=='+' || input[i]=='(' || input[i]==')' || input[i]=='/' || input[i]=='*')
{
count=0;
/*将已有的数据存入队列*/
if (tmp!="")
{
key.push(tmp);
}
/*置空*/
tmp="";
tmp+=input[i];
/*讲一个一个不同于数字的运算符存入队列*/
key.push(tmp);
tmp=""; /*再次置空*/
}
else if (input[i]>=0||input[i]<=9) /*判断是数字*/
{
count++; /*计算连续数字的个数*/
tmp+=input[i]; /*将连续数字存在一起*/
continue;
}
} key.push(tmp); /*处理最后面的数字传入队列*/
tmp="";
}
#endif

在Print类的文件里,主要代码是:



#ifndef __PRINT_H__
#define __PRINT_H__ #include<iostream>
#include<string>
#include<queue>
#include"Scan.h"
using namespace std; /************************************************************
文件名:Print.h
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng
作用:输出Scan类传来的数据
***********************************************************/ //创建一个Print的类
class Print
{
/*在类中定义一个输出队列的方法*/
public:
void PrintStringQueue();
}; //对Print的类中的方法进行封装
void Print::PrintStringQueue()
{
if (count<=10)
{
/*判断key队列是否为空*/
while (!key.empty())
{
cout<<key.front()<<endl; /*一个一个的输出*/
key.pop(); /*删除最先那个;因为queue队列是front in front out。*/
}
}
}
#endif

我所建立的工程:

对于本次作业,我再次明白了代码规范的作用,给人清晰,让人看起来舒服。关键是代码的规范更容易让人明白你代码的作用。所以本次作业是很有必要的。继续加油!!

新的Calculator的规范作业的更多相关文章

  1. ES6新特性以及一些规范

    1.let:使变量成为块级变量,类似于C++,java类的变量 b = 2 if (b == 2) { let c = 2; } console.log(c) // 报错,因为c是一个块级变量,只存在 ...

  2. 作业配置规范文档[MS SQL]

    作业配置规范文档(MS SQL) 文档类型 MS SQL数据库作业配置规范文档 创建日期 2015-07-30 版本变化 V3.0 修改记录 修改人 修改日期 版本 修改描述 潇湘隐者 2015-08 ...

  3. Flutter 1.17 新 Material motion 规范的预构建动画

    老孟导读:在 Flutter 1.17 发布大会上,Flutter 团队还发布了新的 Animations 软件包,该软件包提供了实现新的 Material motion 规范的预构建动画. 软件包 ...

  4. Day4 - Python基础4 迭代器、装饰器、软件开发规范

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  5. Python基础4 迭代器、装饰器、软件开发规范

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  6. Python之迭代器、装饰器、软件开发规范

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...

  7. 再探CSS 中 class 命名规范

    一直以来我的CSS 的 class命名都是比较随意,有时采用驼峰式.有时采用下划线,好像没有什么统一的标准,想到什么英文单词就拿过来用,这对于自己瞎写的小项目无伤大雅,遇到冲突的问题可稍加调整改变即可 ...

  8. IOS开发-代码规范

    代码风格的重要性对于一个团队和项目来说不言而喻.网上有许多 Objective-C 的代码风格,但这份简洁而又最符合苹果的规范,同时有助于养成良好的代码习惯,也是我们团队一直遵循的代码风格. 写法没有 ...

  9. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

随机推荐

  1. MySQL 性能测试

    MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行.最终目标是提交 SELECT 语句查找数据行,而不是排除数据行.优化器试图排除数据 ...

  2. 文字属性和div容器盒的使用基础

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 【SAPUI5】ODataとは

    はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...

  4. mybatis第二天——动态SQL与关联查询

    大纲摘要: 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If b) Where c) Foreach d) Sql片段 3.关联查询 a) 一对一关联 b) 一 ...

  5. WebX框架的页面授权

    WebX框架的页面授权 什么是页面授权,简单来说就是对于一个Web应用程序里,哪些页面可以被哪些人在什么情况下访问进行限制.举个简单的例子,有些页面只有用户登录以后才能访问,而另外一些页面无论是否用户 ...

  6. 【转载】COM 组件设计与应用(八)——实现多接口

    原文:http://vckbase.com/index.php/wv/1219.html 一.前言 从第五回开始到第七回,咱们用 ATL 写了一个简单的 COM 组件,之所以说简单,是因为在组件中,只 ...

  7. 柯朗微积分与数学分析习题选解(1.3 节 b)

    一直在读<陶哲轩实分析>,陶的书非常的严谨,环环相扣,但是也有个缺点就是计算性的例子和应用方面的例子太少了.所以就又找了本柯朗的<微积分与数学分析>搭配着看.柯朗的书的习题与陶 ...

  8. CodeForces 985D Sand Fortress

    Description You are going to the beach with the idea to build the greatest sand castle ever in your ...

  9. android prgoressBar setProgressDrawable 在4.0系统式正常,在2.3系统上不能正常使用的问题

    上次在做一个电池电量的进度显示时,需要根据背景主题色来切换电池电量的进度的颜色, 但是在对prgoressBar的setProgressDrawable进行设置之后发现,在4.0系统上能够正常,而在2 ...

  10. Python面向过程、模块的使用

    一.Python面向过程 ''' 面向过程编程 核心过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.然后干什么... 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点 ...