一、仓库地址:

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. [转]ASP.NET Core配置环境变量和启动设置

    本文转自:https://www.cnblogs.com/tdfblog/p/Environments-LaunchSettings-in-Asp-Net-Core.html 在这一部分内容中,我们来 ...

  2. SQL Server如何存储特殊字符、上标、下标

    测试验证特殊符号能否存入数据库中: 其中,像一些普通单位符号比如“ ° ′"﹩ $ ﹠ & £¥ ‰ % ℃ ¤ ¢℉”可以正常录入没有问题,但是万分号“‱”之上就不可以了,录入后显 ...

  3. 双11抢券,写一个自动打开页面的html,仅仅是设定时间打开抢券的页面

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  4. Caused by: org.hibernate.HibernateException: identifier of an instance of ... is alterde from

    Caused by: org.hibernate.HibernateException: identifier of an instance of ... is alterde from     Hi ...

  5. java基础之java的基本数据类型

    java分为基本数据类型和引用数据类型.基本数据类型主演分为四类八种,引用数据类型分为接口,类,数组,String. 基本数据类型的四类八种是: 整数类型:byte,short,int,long 数据 ...

  6. ManualResetEvent

    ManualResetEvent是C#中一个比较常用的工具,可用于线程间通信,实现一种类似信号量的功能(不知道我这样描述是否恰当,有可能不是“类似”,而“就是”通过信号量来实现的,因为我也是最近才知道 ...

  7. node.js和JavaScript的关系

    node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时环境. 一.类比JavaScript和java JavaScript java V8 JVM node.js JRE ...

  8. Cocoa pod导入第三方框架遇到的那点事儿

    废话不多说,直接上干货. 以下所有操作均是在Cocoapod导入第三方库,并且是.xcworkspace的工程里面操作的, 1.导入头文件找不到,也就是所谓的,not find ''AFNetwork ...

  9. PHP中文件操作(1)--打开/读取文件

    1.打开文件(fopen) 语法:resource  $fp=fopen(文件地址,模式),返回的是文件指针(file pointer) 模式 含义 r 只读 w 写(清空重写) a 追加 $fp = ...

  10. PoPo数据可视化周刊第6期

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本期可视化精彩视频请关注公众号浏览 全天智能获Pre-A ...