面向对象程序设计第三次作业
Github地址点这里
题目:
Github地址点这里
题目:
代码:
main.cpp
1 #include<iostream>
2 #include<string>
3 #include<queue>
4 #include<stdlib.h>
5 #include"Calculator.h"
6 7 8 using namespace std;
9 10 int main(void)
11 {
12 Scan scan;
13 Print print;
14 15 cout << "请输入表达式" << endl;
16 string input;
17 cin >> input;
18 19 queue<string>queue = scan.ToStringQueue(input);
20 21 print.ToOutput(queue);
22 system("pause");
23 return 0;
24 }
Calculator.h
1 #include<string>
2 #include<queue>
3 using namespace std;
4 5 class Scan
6 {
7 public:
8 queue<string>ToStringQueue(string input);
9 private: queue<string>m_quQueue;
11 int length = 0;//lengh计算数字的长度是否超标.
12 string trans = "";//trans将char型转换为string型.
13 };
14 15 class Print
16 {
17 public:
18 void ToOutput(queue<string>queue);
19 };
ScanPrint.cpp
1 #include<iostream>
2 #include<string>
3 #include<queue>
4 #include<cctype>
5 #include"Calculator.h"
6 using namespace std;
7 8 queue<string>Scan::ToStringQueue(string input)
9 {
10 11 for(int i = 0; i < input.length(); i++)//扫描整个string.
12 {
13 14 15 if (isdigit(input[i]) || input[i] == '.')//如果扫描到数字,对整个数字进行处理.
16 {
17 if (input[i] == '.')
18 {
19 i++;//如果接收到小数点,不计数,直接接收下一个数字.
20 }
21 22 length += 1;
23 24 if (length >= 10)
25 {
26 if(!m_quQueue.empty())
27 m_quQueue.pop();//当数字长度超标,清除数据
28 29 cout << "数字长度超标!" << endl;
30 31 return m_quQueue;
32 break;
33 }
34
35 trans += input[i];
36 if (!isdigit(input[i + 1]))
37 {
38 m_quQueue.push(trans);
39 continue;
40 }
41 }
42 else//接收到的是符号
43 {
44 trans = input[i];
45 m_quQueue.push(trans);//直接进队
46 trans = "";
47 }
48 }
49 return m_quQueue;
50 }
51 52 void Print::ToOutput(queue<string>queue)
53 {
54 string Output;
55 while (!queue.empty())
56 {
57 Output = queue.front();
58 cout << Output << endl;
59 queue.pop();
60 }
61 }
运行结果
解题过程
在之前的自学中,有学习到了题目中要求的string与类,但是对于queue还没有了解。在经过查找研究之后略微知道了queue的用法。
了解了queue之后,我认为题目的重点是对数字的处理,要把一个数字完整的放进队列,并且判断数字的长度是否超标。
在编写时,没有熟练掌握string的+=用法,给自己带来了很多麻烦。还去考虑通过*10来对数字进行处理。
经过查找后,了解了CCTYPE函数,对判断有了很大帮助。
- 经过题目的实践之后才算真正熟悉了C++熟悉了类熟悉了string。能够感受到C++的便捷和魅力。
转载于:https://www.cnblogs.com/Wjianting/p/5222052.html
面向对象程序设计第三次作业相关推荐
- 面向对象程序设计第三次上机作业Debug心路历程
面向对象程序设计第三次上机作业Debug心路历程 前言 1.Container类 2.Matrix类 3.Student 类 4.文件流 前言 由于西安疫情不可抗力因素,期中考试被迫推迟 世界第一拉扯 ...
- 程序设计第三次作业附加 代码规范
题目:第三次作业附加 myGithub 我的程序设计第三次作业 Calculator.h //==============================// //文件名称:calculator.h ...
- java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装
很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间.现在小编带大家重新过一遍知 ...
- 面向对象程序设计第三次实验课——Wuxing
请无视奇葩常量名-- // wuxing.h#pragma once #include <iostream> #include <cstring> #include <s ...
- java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式
[本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...
- python面向对象程序设计的三个特征_哪些是面向对象程序设计的三大特征
展开全部 封装性.继承性.多态性. 1.封装性: 具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433 ...
- PTA(三十)面向对象程序设计 第五章 作业 7-1 复数的比较 (30 point(s))
7-1 复数的比较 (30 point(s)) 题目描述: 建立一个复数类,实数和虚数是其私有数据成员.建立一个>(大于号)的运算符重载,比较两个复数间模的大小. 输入格式: 测试输入包含若干测 ...
- PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))
7-4 分钟秒钟的时间相减 (30 point(s)) 题目描述: 定义一个时间类,分钟和秒钟是其两个私有成员数据.输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计 ...
- C语言程序设计第三次作业——选择结构(1)
(一)改错题 将源程序进行编译,发现有错误信息: 错误信息1 错误原因:scanf语句中没有用"&" 改正方法:在x前加上"&" 错误信息2 错 ...
最新文章
- php url 调度
- android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果
- java计算时间差_JAVA并发编程三大Bug源头(可见性、原子性、有序性),彻底弄懂...
- 大型电商网站的页面静态化方案是如何支撑亿级流量的?
- CentOS 修改线程数限制等(limits.conf)
- 设计师需要的素材网站,给你归纳好了,拿走!
- Clubhouse的不可能三角
- multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8‘ not supporte
- python 字典和列表的遍历
- 李航《统计学习方法》第四章课后答案链接
- Q102:光线追踪场景(1)——地球仪
- linux终端黑客帝国代码雨效果
- 概率统计:离散分布和连续分布
- CSDN调整图片大小、位置
- 课程设计 - 单词检查
- Android 2⃣️day
- 【】02-07主定理
- 配置静态路由的下一跳使用出站接口和下一跳IP的差别
- k8s 出现各种问题解决方案
- 伪随机数和随机数C语言
热门文章
- canopy算法 java_mahout源码canopy算法分析之二CanopyMapper
- Linux top小结
- python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...
- oracle 表空间热备份,oracle对表空间的热备
- python3 open()内置函数
- node process.env
- oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?
- Python_管理项目
- 进制转换(sdut1252)_JAVA
- 2.变量/字符串/if/while/数据类型