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. docker centos7 rabbitmq3.6.5

    docker run --name=rabbitmqtmp -ti centos7/jdk7 /bin/bash yum -y install make gcc gcc-c++ kernel-deve ...

  2. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  3. 【转】 memcmp源码实现

    原型: int memcmp(void *buf1, void *buf2, unsigned int count); 用法:#include <string.h> 功能:比较内存区域bu ...

  4. ios 常用字符串的操作

    //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...

  5. HTTP 源码解读

    作用域:调用函数,访问变量的能力有关 作用域分为:局部和全局(在局部作用域里可以访问到全局作用域的变量,但在局部作用域外面就访问不到局部作用里面所设定的变量) 上下文:与this关键字有关 是调用当前 ...

  6. Appium之python API

    webdriver contexts(self) 说明:返回多个会话内容 使用:driver.contexts current_context(self) 说明:返回单个会话的内容 使用:driver ...

  7. lua实现私有函数

    本文是原创文章,如需转载,请注明文章出处 要用lua实现私有函数,关键就是使用metatable的特性来实现. Test.lua: local v = {};v.x = 100;v.y = 200; ...

  8. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

  9. AngularJS的$watch用法

    $watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...

  10. wordpress目录文件结构说明

    wordpress目录文件结构说明   wordpress目录文件结构说明. WordPress文件夹内,你会发现大量的代码文件和3个文件夹wp-admin wp-content wp-include ...