面向对象程序设计第三次作业
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++的便捷和魅力。