一、仓库地址:

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. Linux下常用的3种软件安装方式

    一:Linux源码安装    1.解压源码包文件    源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式:   ...

  2. Autofac--手动依赖注入

    本文只适合初步接触 autoafc 的小白,大佬勿喷. autofac是一种很轻量的一个依赖注入容器 暂时先说一下手动注入的方式(因为使用自动注入遇到了坑,暂时先写一下手动注入) 1.先定义接口 pu ...

  3. POJ 2480 Longge's problem 欧拉函数—————∑gcd(i, N) 1<=i <=N

    Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6383   Accepted: 2043 ...

  4. MySQL中的存储过程和函数

    存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函 ...

  5. Django HTML 转义

    HTML转义 模板对上下文传递的字符串进行输出时,会对以下字符自动转义 小于号< 转换为< 大于号> 转换为> 单引号' 转换为' 双引号" 转换为 " 与 ...

  6. Git 学习之git 起步(一)

    起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...

  7. 【代码笔记】iOS-自定义选择框

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "CYCustomMultiSe ...

  8. Github的readme.md的排版

    排版格式: 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文字格式 **这是文字粗 ...

  9. MySql与SqlServer的区别

    1.SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运 ...

  10. ORACLE AUDIT 审计

    转自 http://blog.csdn.net/dnnyyq/article/details/4525980 1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计 ...