一、仓库地址:

object-oriented

二、作业要求:

Calculator

三、完成本次作业的情况及感受:

刚接触到这个题目的时候,自己就是那丈二的和尚,摸不着头脑,由于自己视频找得比较少,后面又去补充了关于本次作业需要涉及到的知识点的专题视频——C++类和对象为何物;后面自己又去百度一些关于队列的知识,便开始去尝试做题目,下面是自己写的相关代码:

1.Scan类的相关代码:

①.Scan.h

#ifndef SCAN_H
#define SCAN_H
#include <iostream>
#include <string>
#include <queue> using namespace std;
/*创建一个Scan类并定义类当中函数的方法*/
class Scan
{
public:
Scan();
~Scan();
queue<string> ToStringQueue(string input);
private:
/*创建一个arithmetic队列*/
queue<string>arithmetic;
}; #endif

遇到的问题:由于刚开始接触C++还没多久,对C++的知识还不是很熟悉,导致在打代码的时候对于ToStringQueue(string input)这一语句,忘加头文件#include<string>using namespace std;,导致编译的时候一直报错,后来才发现问题改正;

②.Scan.cpp

#include "scan.h"
#include <iostream>
#include <queue> using namespace std; Scan::Scan()
{
} Scan::~Scan()
{
} /*描述Scan类当中的函数方法*/
queue<string> Scan::ToStringQueue(string input)
/*void Scan::ToStringQueue(string input ,queue<string> *Que)②方法2*/
{
/*计算字符串长度*/
int l = input.size(); /*flg作为标记出现位数超过十位的情况,出现标记为1,total表示当前数字位数*/
int flg=0,total=0;
for (int i=0; i < l;)
{
/*添加一个空字符串存取表达式*/
string tmp=""; /*扫描实数部分判断并计算实数位数*/
while (i < l && input[i] >= '0'
&& input[i] <= '9' || input[i] == '.')
{
tmp+=input[i];
i++;
if(input[i] == '.')
{
total-=1; /*处理位数时去除小数点*/
}
total++;
} /*判断是否超过10位数,若超过则输出Error并输出超出的实数*/
if(total > 10)
{
cout<<"Error,"<<"超过十位数的实数为:"<<tmp<<endl;
tmp="";
total=0;
flg=1;
} /*将符合要求的实数添加到队列中*/
if (tmp != "")
{
arithmetic.push(tmp);
total=0;
} /*扫描运算字符将字符存入已有队列中*/
while (i<l && (input[i]<'0' || input[i]>'9'))
{
tmp="";
tmp+=input[i];
arithmetic.push(tmp);
tmp="";
i++;
}
} /*若超过十位数,输出提示信息*/
if(flg == 1)
{
cout<<"剩余四则运算表达式为:"<<endl;
} /*将所获得的队列返回*/
return arithmetic;
}

遇到的问题:由于对string了解的不是很清楚,不知道怎么处理扫描字符串,后来在班里同学的点拨下,明白string类型可以自动将字符串转化为字符数组,才得知该如何处理扫描这个表达式;

2.Print类的相关代码:

①.Print.h

#ifndef PRINT_H
#define PRINT_H
#include <iostream>
#include <string>
#include "scan.h" using namespace std; /*创建Print类用来输出队列并定义类当中的函数*/
class Print
{
public:
Print();
~Print();
void PrintStringQueue(string input);
private:
}; #endif

②.Print.cpp

#include "print.h"
#include <iostream>
#include <queue> using namespace std; Print::Print()
{
} Print::~Print()
{
} //定义Print类当中的函数方法:
void Print::PrintStringQueue(string input)
{
/*创建Scan对象s*/
Scan s; /*获得Scan里所扫描的队列*/
queue<string> tmp = s.ToStringQueue(input); /*依次输出符合要求的元素*/
while ( !tmp.empty() )
{
cout << tmp.front() << endl;
tmp.pop();
}
}

遇到的问题:在处理好扫描四则运算表达式后。遇到的最大问题便是Print类如何获取ScanScan.cpp里的队列数据;自己也去百度了方法,推荐了用继承、友元函数等;可是自己却没有用过这些方法,导致在写代码的时候,一直报错,后来班里的同学建议用指针的方式做,自己也尝试了下,在SCan.h定义函数的时候定义为void Scan::ToStringQueue(string input ,queue<string> *Que),接下来就没写下去,最后自己的用法是在一位工作多年的前辈的指导下通过调用对象获取Scan类里的队列数据,才把Print类给完成;

3.main函数相关代码:

①.main.cpp

#include <iostream>
#include <string>
#include "print.h" using namespace std; int main()
{
/*输出提示信息*/
cout << "请输入一个四则运算表达式:" << endl; /*创建Print的对象p*/
Print p;
/*定义一个字符串 */
string input;
cin >> input; /*调用Print类 输出队列*/
p.PrintStringQueue( input );
return 0;
}

4.完成感受:

总体完成过程经历了许多挫折,但是在各路大神的指导下还是完成了作业,但是也暴露出了自己学得不够全面,不够彻底的缺点,学习永无止境,希望自己能补缺补漏,不断前进。

四、寒假小结:

整个寒假下来,自我感觉自己做得并不够好,两个视频教程只完成了一个,另一个只学了三分之一左右的课程,自学的意识还不够强烈,希望在新学期能做得更好,在老师的带领下,征服C++这门课程,也希望自己能变得更优秀。

关于第三次寒假作业之C++Calculator项目的情况:的更多相关文章

  1. FJUT第三周寒假作业《第九集,离间计》栈

    第九集,离间计 TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%I64d   Problem Description 拥有了 ...

  2. 第三次寒假作业 sketch 了解

    什么是sketch? sketch 是一种基于散列的数据结构,可以在高速网络环境中,实时地存储流量特征信息,只占用较小的空间资源,并且具备在理论上可证明的估计精度与内存的平衡特性. 通过设置散列函数, ...

  3. 2016福州大学软件工程第三次个人作业-K米软件产品评测

    K米软件测评个人作业结果统计如下: 评分标准: 按照栋哥布置的第三次个人作业--K米测评制定评分标准如下: 第一部分:调研.评测 下载并使用,描述最简单直观的个人第一次上手体验. 0.5 按照描述的b ...

  4. 第三次个人作业——关于K米(Andorid)的案例分析

    第三次个人作业--关于K米(Andorid)的案例分析 1.K米简介 官方网址:http://www.ktvme.com/ 2.评测 2.1.上手体验 带着找bug的心态,兴致勃勃地开始体验 K米.打 ...

  5. Q114寒假作业之割绳子

    割绳子 TimeLimit:1000MS  MemoryLimit:10000K 64-bit integer IO format:%lld Problem Description 已知有n条绳子,每 ...

  6. 糟糠之妻下堂,娇俏公主上位——更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心

    糟糠之妻下堂,娇俏公主上位--更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心 舒适性没有想象中好.我觉得理想的座椅,应该象是在你最疲倦的时候,把 ...

  7. 【作业】HansBug的前三次OO作业分析与小结

    OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...

  8. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

  9. 17秋 SDN课程 第三次上机作业

    SDN 第三次上机作业 1.创建拓扑 2.利用OVS命令下发流表,实现vlan功能 3.利用OVS命令查看流表 s1: s2: 4.验证性测试 5.Wireshark 抓包验证

随机推荐

  1. VM CentOS7 网络配置问题汇总

    0. 前言 在进行配置之前,我们首先需要明确几个概念: I. VM的网络连接方式 ①. 桥接模式(Bridge)   此模式下,VM centOS 在网络中作为一台独立主机存在,它可以访问网络中的任何 ...

  2. hadoop学习笔记(九):MapReduce程序的编写

    一.MapReduce主要继承两个父类: Map protected void map(KEY key,VALUE value,Context context) throws IOException, ...

  3. WinForm 多语言处理

    多语言处理工具我使用的是  SailingEase .NET Resources Tool ,好处是导出一个Excel,把具体翻译工作交给专业的人来做,翻译ok后再导入,缺点就是后续更改麻烦,添加一个 ...

  4. struts2入门实例

    引言: 接触.net有3.4年的时间了,一直想学习java,中间因为种种原因耽搁下来.本人学习java的目的,一是多条出路,二是和.net平台互相印证,毕竟只用一门语言,无论是在框架还是在眼界方面都会 ...

  5. python可视化基础

    常用的python可视化工具包是matplotlib,seaborn是在matplotlib基础上做的进一步封装.入坑python可视化,对有些人来说如同望山跑死马,心气上早输了一节.其实学习一门新知 ...

  6. JVM读书笔记

    1 概念 java virtual machine为java虚拟机,运行使用jdk中编译器编译的java程序. 2 JVM内存模型 程序计数器:线程私有.当前线程正在执行的行号指示器. Java虚拟机 ...

  7. 为什么不要 "lock(this)" ? lock object 并是readonly(转载)

    一. 为什么要lock,lock了什么?   当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是 ...

  8. IDEA使用总结1-Github下载代码和上传代码到Git

    1. 首先你需要在IDEA中创建一个项目,创建完项目后使能版本管理插件 选择git后创建本地git仓库成功,提示如下 2.第二步 commit代码到 commit时会提示是否需要进行检查什么的 3.第 ...

  9. Bash:常用命令工具-tr命令

    tr命令可以用来做简单的字符替换与删除,常用的有-d, -s选项.它的替换与删除是按单个字符来的 假设有以下文本: Read from the file words.txt and output th ...

  10. vue-quill-editor 富文本集成quill-image-extend-module插件实例,以及UglifyJsPlugin打包抱错问题处理

    官网 vue-quill-editor Toolbar Module - Quill vue-quill-image-upload 图片支持上传服务器并调整大小 1.在 package.json 中加 ...