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 ...
随机推荐
- 读《编写可维护的JavaScript》第八章总结
第八章 避免“空比较” 我们在对传进来的参数做处理之前,肯定需要验证一下是否是我们想要的,也就是说大多数情况下,我们需要对比一下它的类型. 作者首先给了一个看起来都感觉不对的代码: var Contr ...
- ShaderForge
什么是ShaderForge ShaderForge的目标是推动统一的视觉质量提升到了新的高度, 给你自由的材质创建在一个视觉和直观的方式——不需要代码! ShaderForge的特性 •实时着色器预 ...
- LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现
解决的问题 当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发.线程安全的协调? 很简单,用一个队列. 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费 ...
- 慕课网__css3__3D
- Pod 的安装
1.如果之前已经安装过的 gem list --local | grep cocoapods 会看到如下输出: cocoapods (1.1.1)cocoapods-deintegrate (1.0. ...
- Java中如何获取spring中配置文件.properties中属性值
通过spring配置properties文件 1 2 3 4 5 6 7 8 9 <bean id="propertyConfigurer" class="co ...
- Remoting&WebService的区别之处
Remoting与Web Services的区别是:(1)既支持TCP信道又支持HTTP信道,传输速度快(2)即可传输XML的SOAP包又可传输二进制流,效率高(3)Remoteing主要用于C/S结 ...
- 关于头文件的一些常用<meta>
一.常见的<meta>(摘自百度) 1. 设置编码信息<meta http-equiv="Content-Type" Content="text/htm ...
- 【转】Pycharm的激活
如果要基于Python进行开发的话,那么pycharm是个不错的选择,试用一个月以后需要激活,原文如下: 原文链接:http://blog.csdn.net/lanchunhui/article/de ...
- MySQL使用技巧收集,持续更新中......
1.查询时按某一内容为中文的字段,以拼音字母排序: SELECT * FROM game ORDER BY CONVERT(name USING GBK);