关于第三次寒假作业之C++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项目的情况:的更多相关文章
- FJUT第三周寒假作业《第九集,离间计》栈
第九集,离间计 TimeLimit:1000MS MemoryLimit:128MB 64-bit integer IO format:%I64d Problem Description 拥有了 ...
- 第三次寒假作业 sketch 了解
什么是sketch? sketch 是一种基于散列的数据结构,可以在高速网络环境中,实时地存储流量特征信息,只占用较小的空间资源,并且具备在理论上可证明的估计精度与内存的平衡特性. 通过设置散列函数, ...
- 2016福州大学软件工程第三次个人作业-K米软件产品评测
K米软件测评个人作业结果统计如下: 评分标准: 按照栋哥布置的第三次个人作业--K米测评制定评分标准如下: 第一部分:调研.评测 下载并使用,描述最简单直观的个人第一次上手体验. 0.5 按照描述的b ...
- 第三次个人作业——关于K米(Andorid)的案例分析
第三次个人作业--关于K米(Andorid)的案例分析 1.K米简介 官方网址:http://www.ktvme.com/ 2.评测 2.1.上手体验 带着找bug的心态,兴致勃勃地开始体验 K米.打 ...
- Q114寒假作业之割绳子
割绳子 TimeLimit:1000MS MemoryLimit:10000K 64-bit integer IO format:%lld Problem Description 已知有n条绳子,每 ...
- 糟糠之妻下堂,娇俏公主上位——更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心
糟糠之妻下堂,娇俏公主上位--更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心 舒适性没有想象中好.我觉得理想的座椅,应该象是在你最疲倦的时候,把 ...
- 【作业】HansBug的前三次OO作业分析与小结
OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...
- CSAPP深入理解计算机系统(第二版)第三章家庭作业答案
<深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...
- 17秋 SDN课程 第三次上机作业
SDN 第三次上机作业 1.创建拓扑 2.利用OVS命令下发流表,实现vlan功能 3.利用OVS命令查看流表 s1: s2: 4.验证性测试 5.Wireshark 抓包验证
随机推荐
- SQL Server数据库状态和文件状态
数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go se ...
- web前端开发教程系列-3 - 前端开发调试工具分享
前言 一. Bug出现的原因 1. 主观原因或者是出现这么多浏览器的原因 2. 另外客观原因: 二. 调试工具 1. Firebug 2. Chrome 3. IE11 4. IETester 5. ...
- DOS窗口带jar包运行java程序
由于工作环境的问题,有过一次这样的测试,需要在DOS窗口运行带有jar包的java程序 编译命令如下: javac -Djava.ext.dirs=./lib Test.java 或 javac -D ...
- RequestAnimationFrame更好的实现Javascript动画
一直以来,JavaScript的动画都是通过定时器和间隔来实现的.虽然使用CSS transitions 和 animations使Web开发实现动画更加方便,但多年来以JavaScript为基础来实 ...
- 原生webview 日期格式转时间戳兼容问题
需要根据后端返回的日期格式返回相应时间戳 后端返回的数据格式: let dateStr = 2019-04-19T10:39:10.000+0000; 直接new Date(dateStr ).g ...
- Git——克隆部分文件
在进行项目开发的时候,有时候会有这样的需求那就是:我们只希望从Git仓库里取指定的文件或者文件夹出来.在SVN里面,这非常容易实现,因为SVN基于文件方式存储,而Git却是基于元数据方式分布式存储文件 ...
- ubuntu下创建虚拟python3开发环境
友情链接:ubuntu16.04下安装python3+创建虚拟python3开发环境 1.为什么要创建python3虚拟开发环境? /********************************* ...
- 深度学习GPU集群管理软件 OpenPAI 简介
OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...
- Android onActivityResult和setResult
如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方 ...
- 项目maven update 后启动项目出现导常:org.springframework.web.context.ContextLoaderListener
导常:org.springframework.web.context.ContextLoaderListener 1. 右键单击工程项目 ->点击 properties2. 选择 Deploym ...