《面向对象程序设计》第三次作业 Calculator
c++第三次作业 Calculator
git上的作业展示点这里。
ps:有一点不是很明确,作业要求:将数字和符号提取出来,得到一组string,然后才将这些string存入队列中。按我的理解是需要将每一个部分都先存在一个string数组里,这样显得很冗余也有点古怪,因此我直接讲string分出来后存在队列中。如果诸位大神有更新的见解,跪求指点。
Scan.hpp
#ifndef Scan_hpp
#define Scan_hpp
#include <iostream>
#include <queue>
#include <string>
using namespace std;
class Scan
{
private:
//用于接收键盘输入的四则运算表达式
string input;
string charString;
public:
queue<string> ToStringQueue(string input);
//判断数字是否过大用的标记
bool tooBig;
};
#endif
Scan.cpp
#include "Scan.hpp"
#include <iostream>
#include <queue>
#include <string>
using namespace std;
queue<string> Scan::ToStringQueue(string input){
tooBig = false;
//计算数字位数的字符串
int count=0;
//用于组合数字或符号的字符串
string item = "";
std::queue<string> charQueue;
for (int i=0; i<input.length(); i++)
{
//是符号则先将组合好的数字压入队列然后才压入符号
if(input[i]=='+' || input[i]=='-'|| input[i]=='*' || input[i]=='/' || input[i]=='(' || input[i]==')' )
{
if(!item.empty()){
charQueue.push(item);
}
item.clear();
count = 0;
item = input[i];
charQueue.push(item);
item.clear();
}
//组合数字的过程里计算位数,注意:小数点不要计入位数中!
else if((input[i] >= 48 && input[i] <=57) || input[i] == '.' )
{
item += input[i];
if(input[i] != '.'){
count++;
}
if (count >= 10) {
tooBig = true;
}
}
}
//如果最后一个字符是数字则要记住将其压入
if(!item.empty())
{
charQueue.push(item);
}
return charQueue;
}
Print.hpp
#ifndef Print_hpp
#define Print_hpp
#include <iostream>
#include <queue>
#include <string>
using namespace std;
class Print
{
public:
void printString(queue<string> charQueue);
};
#endif
Print.cpp
#include "Print.hpp"
#include <iostream>
#include <queue>
#include <string>
void Print::printString(queue<string> charQueue)
{
//从队列头输出字符串,然后取出已完成输出的字符串,直到结束
while (!charQueue.empty()) {
cout << charQueue.front() << endl;
charQueue.pop();
}
}
main.cpp
#include <iostream>
#include <queue>
#include <string>
#include "Print.hpp"
#include "Scan.hpp"
using namespace std;
int main() {
string input;
Scan m_scan;
getline(cin,input);
//先执行一次函数来计算布尔值决定下一步
m_scan.ToStringQueue(input);
//有出现大于10位数的数字则报错,没有就输出队列
if(m_scan.tooBig)
{
cout << "Error!Number not conform to the requirement.";
}
else
{
class Print pr;
pr.printString(m_scan.ToStringQueue(input));
}
return 0;
}
数据检测


ps:看视频比看书效率高、有意思,不要问我怎么知道的……
《面向对象程序设计》第三次作业 Calculator的更多相关文章
- 面向对象程序设计第三次作业-Calculator
题目: 最终代码: Scan.h: Print.h: Calaulator.cpp: 解题过程 看到题目后,在查询之后明白了这是多文件的题目,然后通过翁凯老师的视频讲解知道了.h和.cpp文件的区别和 ...
- 程序设计第三次作业---C++计算器雏形
Github链接:https://github.com/Wasdns/object-oriented 题目:程序设计第三次作业 程序设计第三次作业附加 我的程序设计第三次作业附加 代码规范 更新时间: ...
- 程序设计第三次作业--C++计算器初始部分
面向对象程序设计作业3--C++计算器初始部分 Github 链接:https://github.com/luojingzhao/object-oriented/tree/master/calcula ...
- C语言程序设计第三次作业--选择结构(1)
Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...
- 浅谈JavaScript的面向对象程序设计(三)
前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...
- 《面向对象程序设计》 三 Calculator 计算器初步
Git传送门 纸上得来终觉浅,绝知此事要躬行. 学习了一些c++的相应知识后,虽然了解写法,真正操作时还是出现小错误.要多操作,记住关键点,避免不该有的小错误. 写分文件类外定义时出现了问题.在Sca ...
- C语言程序设计第三次作业
态度决定一切,无论做什么事情,秉持一个认真的态度,相信一定会让你受益无穷.当提交作业时,如果只是粘贴一下代码和运行结果,那么,你也只是写了一个程序而已,对你自己水平的提升帮助并不大,这次犯的错误或许下 ...
- 《面向对象程序设计》第二次作业(1)(A+B问题)
作业记录: 问题描述与代码已上传github仓库object-oriented文件夹下 题目一览 Calculate a + b and output the sum in standard form ...
- C++面向对象程序设计第三章习题答案解析
整理一下自己写的作业,供考试前复习用,哈哈 进入正题!!! 题目: 2.分析下面的程序,写出其运行时的输出结果 这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释 #inclu ...
随机推荐
- PJ初赛复习日记
PA姑娘的PJ初赛复习日记 by Pleiades_Antares PJ初赛考试马上就要开始了(今年应该是10.13吧?),作为蒟蒻的我们怎么能不复习呢? 众所周知,复习方法有很多很多种-- 比如 ( ...
- SQL查询语句,怎样查询重复数据
SQL查询语句,怎样查询重复数据 2012-02-22 14:50神奇的马骁勇 | 浏览 0 次 有表A, 中有字段id, name, memo现在有很多id重复的数据,怎么把这些重复的都查出来?gr ...
- python六十三课——高阶函数之sorted
演示sorted函数的使用,以及和sort的区别:我们将sorted和sort进行一番比较:相同点:它们都是来实现排序的操作(功能层面)不同点:列表中的sort函数,它执行完毕后会直接影响原本这个li ...
- [android]android Task 任务 简介
http://blog.csdn.net/guomeijuan916/article/details/8121468 关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来 ...
- 【转】escape,encodeURI,encodeURIComponent有什么区别?
在这个页面里面试着搜了一下 「UTF-8」 ,居然没有搜到. escape 和 encodeURI 都属于 Percent-encoding,基本功能都是把 URI 非法字符转化成合法字符,转化后形式 ...
- Redis漏洞,远程攻击
文章转自http://blog.csdn.net/whs_321/article/details/51734602 http://blog.knownsec.com/2015/11/analysis- ...
- Flink 的datastreamAPI 以及function函数的调用,性能调优
1 DataStreamAPI1.1 DataStream Data Sources source是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource ...
- PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- 【Codeforces Gym 100725K】Key Insertion
Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...
- maven 插
一.maven插件元素 <?xml version="1.0" encoding="utf-8"?> <plugin> <!--插 ...