一、仓库地址:

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. 三种数据库访问——Spring JDBC

    本篇随笔是上两篇的延续:三种数据库访问——原生JDBC:数据库连接池:Druid Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要 ...

  2. 【原】Shiro框架基础搭建[2]

    简介: 关于搭建一个最基础的shiro网上的例子有很多,这里是记录一下自己尝试去看官方文档所搭建的一个小demo,项目采用的是原始的java静态工程,导入相关jar包后就能运行. 首先进入官网http ...

  3. MySQL 批量删除相同前缀的表

    sql 命令批量生成drop命令 需要批量删除表,而MySQL又没有提供相关的功能:一般我们建表也都会使用相同前缀,那么,在不使用工具的情况下可以选择使用sql生成批量删除命令: 如删除以 " ...

  4. CRC算法

    https://blog.csdn.net/dream_1996/article/details/73588269

  5. Code Signal_练习题_isLucky

    Ticket numbers usually consist of an even number of digits. A ticket number is considered lucky if t ...

  6. gulp自动化打包及静态文件自动添加版本号

    前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实 ...

  7. BZOJ2663 [Beijing wc2012]灵魂宝石

    Description 平面中有\(n\)个黑点和\(n\)个白点.这些点组成\(n\)对,但是你不知道它们的对应关系.若某队中黑点白点距离\(<R\),则它是好的:\(>R\)则不是好的 ...

  8. Django基础四之模板系统

    一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使 ...

  9. 查看Linux 、Nginx、 MySQL 、 PHP 版本的方法

    参考:查看Linux .Apache . MySQL . PHP 版本的方法 1.查看Linux版本: uname -a: more /etc/issue; cat /proc/version; 2. ...

  10. Python解析SWAN气象雷达数据--(解析、生成ASCII、Image、netCDF)

    解析   from datetime import * import time import calendar import json import numpy as np from struct i ...