Calculator(1.0)
Calculator(1.0)
解题过程中遇到的困难
- 对于c++中类和对象的使用不够明确,看了c++的视频教程学会了用类和对象来写程序。
- 不会使用
<queue>,在网上查阅资料,初步了解了<queue>的用法。 - 实在用不来指针orz,在对输入的数据进行处理时,只好全程用数组。
- 处理数字时,一开始对于一位以上数字的处理过于繁琐,问了同学才知道
<string>可以相加,这样就可以方便地存储一位以上的数字。 - 忽略了对小数点的处理,在判断数字或符号时加上一个对小数点的处理就行了。
- 代码规范,用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)的更多相关文章
- 作业45//Calculator::3.0
计算器 github 我的天我到底要写什么 一,2.0及2.6的改动 做了计算部分 加入了判断输入是否合法 合法的定义是算式符合`数字+运算符+数字+运算符+数字`的格式 其中`"-&quo ...
- CVSS3.0打分学习
打分计算器: Common Vulnerability Scoring System Version 3.0 Calculator: https://www.first.org/cvss/calcul ...
- [C++ Calculator 项目] 初试
Calculator V1.0 注:这是一个C++计算器项目的初始部分. 大体功能简介: 能够输入一串数学表达式 逐字符扫描,提取数字和符号得到一组队列 逐行输出提取的符号与数字 实现代码如下: sc ...
- 蓝桥杯练习系统— 算法训练 Beaver's Calculator
问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...
- 蓝桥杯 Beaver's Calculator
问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...
- Java实现 蓝桥杯 算法训练 Beaver's Calculator
试题 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
- [转]在Eclipse中使用JUnit4进行单元测试(初级篇)
首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...
- .Net 中的反射(动态创建类型实例) - Part.4
动态创建对象 在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它.可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以 ...
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...
随机推荐
- 【转】使用:after清除浮动
以前总是加一个<div sytle="clear:both"></div>来解决,但这样会增加无语义的标签,下面是用after伪类实现,兼容多种浏览器.cl ...
- Sprint第三阶段(第四天12.12)
- java 执行jar指定log4j.properties文件位置
默认情况下,log4j.properties会被加载,并且这个文件需要在classpath根目录,当打包jar时,会打包打jar内部,当需要修改日志级别时,会比较麻烦 可以使用:java -jar - ...
- github项目配置
准备工作: 下载一个git: https://git-scm.com/downloads 1.登陆到github 登陆地址:https://github.com/login 2.创建新项目 3.配置 ...
- 狗汪汪玩转无线电 -- GPS Hacking
狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...
- 14TH本周工作量及进度统计
14TH本周工作量及进度统计 本周psp: C(类别) C(内容) S(开始时间) ST(结束时间) I(中断时间) T(实际时间) 活动 本周会议 1 ...
- java父类与接口有相同的方法
这是java多态的一个体现,如果一个类classA继承了类classB,有实现了接口interfaceA,并且接口中有方法funA(),且父类classB中也有funA(),那么对于classA来说既 ...
- hdu acm 简单暴力1004
字符串匹配函数strcmp 直接使用来判断两字符串是否完全相等 用数组存每个单词的个数时 初始化为零就错 初始化为一时就正确 也不知道为什么
- SSIS-包调用包错误的解决方案
1.错误信息: 无法解密受保护的 XML 节点“ DTS:Password”,错误为 0x8009000B“该项不适于在指定状态下使用.”.可能您无权访问此信息.当发生加密错误时会出现此错误.请确保提 ...
- 给libpcap增加一个新的捕包方法
libpcap是一个网络数据包捕获函数库,功能非常强大,提供了系统独立的用户级别网络数据包捕获接口,Libpcap可以在绝大多数类unix 平台下工作.大多数网络监控软件都以它为基础,著名的tcpdu ...