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

面向对象程序设计第三次作业相关推荐

  1. 面向对象程序设计第三次上机作业Debug心路历程

    面向对象程序设计第三次上机作业Debug心路历程 前言 1.Container类 2.Matrix类 3.Student 类 4.文件流 前言 由于西安疫情不可抗力因素,期中考试被迫推迟 世界第一拉扯 ...

  2. 程序设计第三次作业附加 代码规范

    题目:第三次作业附加 myGithub 我的程序设计第三次作业 Calculator.h //==============================// //文件名称:calculator.h ...

  3. java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间.现在小编带大家重新过一遍知 ...

  4. 面向对象程序设计第三次实验课——Wuxing

    请无视奇葩常量名-- // wuxing.h#pragma once #include <iostream> #include <cstring> #include <s ...

  5. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  6. python面向对象程序设计的三个特征_哪些是面向对象程序设计的三大特征

    展开全部 封装性.继承性.多态性. 1.封装性: 具备封装性(Encapsulation)的面向对象编程隐藏了某一方62616964757a686964616fe78988e69d8331333433 ...

  7. PTA(三十)面向对象程序设计 第五章 作业 7-1 复数的比较 (30 point(s))

    7-1 复数的比较 (30 point(s)) 题目描述: 建立一个复数类,实数和虚数是其私有数据成员.建立一个>(大于号)的运算符重载,比较两个复数间模的大小. 输入格式: 测试输入包含若干测 ...

  8. PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))

    7-4 分钟秒钟的时间相减 (30 point(s)) 题目描述: 定义一个时间类,分钟和秒钟是其两个私有成员数据.输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计 ...

  9. C语言程序设计第三次作业——选择结构(1)

    (一)改错题 将源程序进行编译,发现有错误信息: 错误信息1 错误原因:scanf语句中没有用"&" 改正方法:在x前加上"&" 错误信息2 错 ...

最新文章

  1. php url 调度
  2. android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果
  3. java计算时间差_JAVA并发编程三大Bug源头(可见性、原子性、有序性),彻底弄懂...
  4. 大型电商网站的页面静态化方案是如何支撑亿级流量的?
  5. CentOS 修改线程数限制等(limits.conf)
  6. 设计师需要的素材网站,给你归纳好了,拿走!
  7. Clubhouse的不可能三角
  8. multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1;charset=UTF-8‘ not supporte
  9. python 字典和列表的遍历
  10. 李航《统计学习方法》第四章课后答案链接
  11. Q102:光线追踪场景(1)——地球仪
  12. linux终端黑客帝国代码雨效果
  13. 概率统计:离散分布和连续分布
  14. CSDN调整图片大小、位置
  15. 课程设计 - 单词检查
  16. Android 2⃣️day
  17. 【】02-07主定理
  18. 配置静态路由的下一跳使用出站接口和下一跳IP的差别
  19. k8s 出现各种问题解决方案
  20. 伪随机数和随机数C语言

热门文章

  1. canopy算法 java_mahout源码canopy算法分析之二CanopyMapper
  2. Linux top小结
  3. python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...
  4. oracle 表空间热备份,oracle对表空间的热备
  5. python3 open()内置函数
  6. node process.env
  7. oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?
  8. Python_管理项目
  9. 进制转换(sdut1252)_JAVA
  10. 2.变量/字符串/if/while/数据类型