Calculator(1.0)

Github链接

解题过程中遇到的困难

  1. 对于c++中类和对象的使用不够明确,看了c++的视频教程学会了用类和对象来写程序。
  2. 不会使用<queue>,在网上查阅资料,初步了解了<queue>的用法。
  3. 实在用不来指针orz,在对输入的数据进行处理时,只好全程用数组。
  4. 处理数字时,一开始对于一位以上数字的处理过于繁琐,问了同学才知道<string>可以相加,这样就可以方便地存储一位以上的数字。
  5. 忽略了对小数点的处理,在判断数字或符号时加上一个对小数点的处理就行了。
  6. 代码规范,用alt+F8调了缩进,然后按照规范调了一下代码。

代码

Scan.h

#pragma once
#include <iostream>
#include <queue>
#include <string>
using namespace std; class Scan
{ private: queue <string> q;
bool error; public: Scan();
void ToStringQueue (string input); /*对输入的数字或符号进行处理并存到队列中*/
queue <string> ReturnQueue(); /*返回处理后得到的队列*/
bool IsError(); /*用于在数字超出十位时报错*/ };

Print.h

#pragma once
#include <iostream>
#include <queue>
#include <string>
using namespace std; class Print
{ public: void print (queue<string>q); /*用于输出处理后的队列*/ };

Scan.app

#include "Scan.h"
using namespace std; Scan::Scan()
{
error = false;
} void Scan::ToStringQueue(string input)
{
int i;
string a , b;
for(i = 0;i < input.size();i++)
{ if((input[i] < '0' || input[i] > '9') && input[i]!='.')
{
a = input[i];
q.push(a);
a = "";
}
else
{
b = input[i];
a = a + b; if(a.size() > 10)
{
error = true;
} if (i == input.size() - 1)
{
q.push(a);
a = "";
}
else if(input[i+1]!='.')
{
if(input[i+1] < '0' || input[i+1] > '9')
{
q.push(a);
a = "";
}
}
}
}
} queue <string> Scan::ReturnQueue()
{
return q;
} bool Scan::IsError()
{
return error;
}

Print.cpp

#include "Print.h"
using namespace std; void Print::print(queue<string>q)
{
for(;q.empty() == false;)
{
cout << q.front() << endl;
q.pop();
}
}

main.cpp

#include "Scan.h"
#include "Print.h"
#include <iostream>
#include <string>
using namespace std; int main()
{
Scan scan;
Print print;
string input;
cin >> input;
scan.ToStringQueue (input); if(scan.IsError() == false)
print.print(scan.ReturnQueue());
else
cout << "超过十位啦!"; return 0;
}

Calculator(1.0)的更多相关文章

  1. 作业45//Calculator::3.0

    计算器 github 我的天我到底要写什么 一,2.0及2.6的改动 做了计算部分 加入了判断输入是否合法 合法的定义是算式符合`数字+运算符+数字+运算符+数字`的格式 其中`"-&quo ...

  2. CVSS3.0打分学习

    打分计算器: Common Vulnerability Scoring System Version 3.0 Calculator: https://www.first.org/cvss/calcul ...

  3. [C++ Calculator 项目] 初试

    Calculator V1.0 注:这是一个C++计算器项目的初始部分. 大体功能简介: 能够输入一串数学表达式 逐字符扫描,提取数字和符号得到一组队列 逐行输出提取的符号与数字 实现代码如下: sc ...

  4. 蓝桥杯练习系统— 算法训练 Beaver's Calculator

    问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...

  5. 蓝桥杯 Beaver's Calculator

    问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...

  6. Java实现 蓝桥杯 算法训练 Beaver's Calculator

    试题 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  7. [转]在Eclipse中使用JUnit4进行单元测试(初级篇)

    首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...

  8. .Net 中的反射(动态创建类型实例) - Part.4

    动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...

  9. 在Eclipse中使用JUnit4进行单元测试(高级篇)

    通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...

随机推荐

  1. 【转】使用:after清除浮动

    以前总是加一个<div sytle="clear:both"></div>来解决,但这样会增加无语义的标签,下面是用after伪类实现,兼容多种浏览器.cl ...

  2. Sprint第三阶段(第四天12.12)

  3. java 执行jar指定log4j.properties文件位置

    默认情况下,log4j.properties会被加载,并且这个文件需要在classpath根目录,当打包jar时,会打包打jar内部,当需要修改日志级别时,会比较麻烦 可以使用:java -jar - ...

  4. github项目配置

    准备工作: 下载一个git:  https://git-scm.com/downloads 1.登陆到github 登陆地址:https://github.com/login 2.创建新项目 3.配置 ...

  5. 狗汪汪玩转无线电 -- GPS Hacking

    狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...

  6. 14TH本周工作量及进度统计

      14TH本周工作量及进度统计    本周psp:                    C(类别) C(内容) S(开始时间) ST(结束时间) I(中断时间) T(实际时间) 活动 本周会议 1 ...

  7. java父类与接口有相同的方法

    这是java多态的一个体现,如果一个类classA继承了类classB,有实现了接口interfaceA,并且接口中有方法funA(),且父类classB中也有funA(),那么对于classA来说既 ...

  8. hdu acm 简单暴力1004

    字符串匹配函数strcmp 直接使用来判断两字符串是否完全相等 用数组存每个单词的个数时  初始化为零就错 初始化为一时就正确  也不知道为什么

  9. SSIS-包调用包错误的解决方案

    1.错误信息: 无法解密受保护的 XML 节点“ DTS:Password”,错误为 0x8009000B“该项不适于在指定状态下使用.”.可能您无权访问此信息.当发生加密错误时会出现此错误.请确保提 ...

  10. 给libpcap增加一个新的捕包方法

    libpcap是一个网络数据包捕获函数库,功能非常强大,提供了系统独立的用户级别网络数据包捕获接口,Libpcap可以在绝大多数类unix 平台下工作.大多数网络监控软件都以它为基础,著名的tcpdu ...