个人实验分析博客

1

PSP2.1

Personal Software Process Stages

Time 

Planning

计划

 

· Estimate

· 估计这个任务需要多少时间

40h

Development

开发

 

· Analysis

· 需求分析 (包括学习新技术)

8h

· Design Spec

· 生成设计文档

1h

· Design Review

· 设计复审 (和同事审核设计文档)

0

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0

· Design

· 具体设计

5h

· Coding

· 具体编码

3h

· Code Review

· 代码复审

2h

· Test

· 测试(自我测试,修改代码,提交修改)

1h

Reporting

报告

 

· Test Report

· 测试报告

0.5h

· Size Measurement

· 计算工作量

0.5h

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

0.5h

 

合计

21.5h

2

PSP2.1

Personal Software Process Stages

Time 

Planning

计划

 

· Estimate

· 估计这个任务需要多少时间

40h

Development

开发

 

· Analysis

· 需求分析 (包括学习新技术)

4h

· Design Spec

· 生成设计文档

2h

· Design Review

· 设计复审 (和同事审核设计文档)

0

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0.5h

· Design

· 具体设计

10h

· Coding

· 具体编码

5h

· Code Review

· 代码复审

0

· Test

· 测试(自我测试,修改代码,提交修改)

0.5h

Reporting

报告

 

· Test Report

· 测试报告

0.3h

· Size Measurement

· 计算工作量

0.2h

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

0.2h

 

合计

22.7h

3、我改进程序性能上花费了两个小时。在检查是否是相同式子时,最初只是看结果是否相同,经过改进后,我现在除了比较结果,还观察运算数是否相同,运算符号是否相同,只有都相同的才认为是相同的式子。这样更大程度保证了误判的情况,而且这样兼顾了效率。

另一个改进的地方是,为了实现算式的计算,我使用了中缀转后缀的方法,为了更好地在一个栈里存数字和负号,将数字类中增加一个符号的属性,一般时候也不使用这个属性。只有中缀转后缀时候使用。

 

4、(1)输入n=r=10

生成表达式:

1. 4 + 9 = 

2. 0 + 6'2/7 - 5'5/8 = 

3. 8 ÷ × 10 + 4'1/4 = 

4. 5 - 3'1/2 + ( 1 + 5'7/8 )  = 

5. ( 4 ÷ 3/4 ) + 5'2/3 = 

6. 6'7/9 - 10'2/5 ÷ ( 10'3/7 + 5'3/5 )  = 

7. 6'1/4 + ( 3/4 × 6'1/3 )  = 

8. 7'1/4 × ( 9'1/2 ÷ 6/7 ) - 8 = 

9. 6'6/7 × 6'7/8 ÷ 1'6/7 × 9'7/9 = 

10. 6'2/3 + 4'1/2 = 

 

 

生成答案:

1. 13

2. 37/56

3. 30'11/12

4. 8'3/8

5. 11

6. 6'217/1683

7. 11

8. 72'17/48

9. 248'8/39

10. 11'1/6

 

分析:对于生成的表达式中,整数、分子、分母都小于10,生成了10个式子。经过计算,结果也是对的。

2)输入上面生成的文件

match.txt,输出

Correct: 10(1,2,3,4,5,6,7,8,9,10)

Wrong: 0()

这显然是正确的。

3)输入:r=3n=100

生成题目:

1. 2'1/2 - 1 = 

2. 2 + ( 2 + 2 )  = 

3. ( 0 × 2 ) × 1 = 

4. 2'1/2 ÷ 1/2 + 1'1/2 ÷ 2 = 

5. 0 + ( 2 - 2 ) × 2 = 

6. 2 ÷ 2 = 

7. 0 + 1'1/2 × 0 = 

8. 2'1/2 ÷ 2 = 

9. 2 + 0 = 

10. 1 ÷ 1'1/2 = 

11. ( 2'1/2 ÷ 1/2 ) ÷ 2 = 

12. 0 × ÷ 2 = 

13. 3 × 0 = 

14. 0 ÷ 1'1/2 + 0 = 

15. 2'1/2 × 1 = 

16. 1 ÷ 3 - 1 ÷ 3 = 

17. 2 - ( 2 × 1 ) ÷ 2 = 

18. 1 ÷ ( 1 - 1/2 ) × 2 = 

19. 2 - 1'1/2 ÷ ( 1 + 1 )  = 

20. 3 ÷ 1 = 

21. 3 + ( 2 + 3 ) - 1 = 

22. 1 + 1'1/2 = 

23. 2 × ( 2 × 2 )  = 

24. 1 - 1 = 

25. 1 + 1 = 

26. 2 × 2 + ( 2 + 2 )  = 

27. 1 - 1/2 ÷ ( 2 × 2 )  = 

28. 1 - 1 + 1 = 

29. ( 2 + 2'1/2 ) × 2'1/2 ÷ 2'1/2 = 

30. 1 + 2 = 

31. 2 + 1/2 × 1/2 = 

32. 2'1/2 ÷ 1 = 

33. 1'1/2 + 1 + 1 = 

34. 2 + 1 × 2 + 2 = 

35. 2'1/2 × 3 - 1'1/2 ÷ 2 = 

36. 1 + 2 + 0 = 

37. 1 × 2 + 1 = 

38. 1 + 2 × 2 + 0 = 

39. 0 + 1 = 

40. 2'1/2 - 2 = 

41. 1 × 1 = 

42. 2'1/2 × ( 1 × 0 )  = 

43. 2 × 1 = 

44. 3 × × 1/2 - 0 = 

45. 0 × ( 2 + 2 )  = 

46. 0 ÷ ( 1/2 × 2 ) ÷ 3 = 

47. 1'1/2 ÷ 2 = 

48. ( 2 + 2 ) ÷ 1 = 

49. 2 - 1'1/2 × ÷ 2 = 

50. 0 + ( 1/2 + 1/2 )  = 

51. 2 - 1'1/2 = 

52. 1 ÷ 1 = 

53. 2 + 2 + 2 - 2 = 

54. 1/2 ÷ 1 = 

55. 1/2 ÷ 2'1/2 × 2 = 

56. 2 × 0 + ( 0 ÷ 1'1/2 )  = 

57. 2'1/2 + 0 + 1 = 

58. 3 ÷ 1/2 - ( 2 × 2 )  = 

59. 1 - ( 2'1/2 × 0 )  = 

60. 1 - ( 0 ÷ 1 ) ÷ 2'1/2 = 

61. 3 ÷ 1/2 = 

62. ( 1 × 1 ) + 3 = 

63. 0 ÷ ( 1 - 0 ) × 2'1/2 = 

64. 1 + ( 1'1/2 × 0 ) + 2 = 

65. 2'1/2 × 2 = 

66. 0 ÷ ( 2 - 0 ) + 1 = 

67. 0 ÷ 1 = 

68. 2 + 2 + ( 2 ÷ 2 )  = 

69. 0 + 0 = 

70. 0 + 2'1/2 - 1/2 × 0 = 

71. 1 ÷ ÷ 2 = 

72. 1/2 + 0 = 

73. 2 ÷ × 2 = 

74. 1/2 + ( 2'1/2 + 2'1/2 )  = 

75. 1'1/2 ÷ 1 + 2'1/2 ÷ 2'1/2 = 

76. 0 ÷ ( 3 + 3 ) ÷ 1 = 

77. 1 × × 1'1/2 = 

78. 1/2 × 1'1/2 = 

79. ( 1/2 ÷ 2 ) × 3 = 

80. 2 - 0 = 

81. 2 ÷ 1/2 = 

82. ( 1 + 2 ) - 0 = 

83. 2 ÷ ( 2'1/2 + 2'1/2 ) - 0 = 

84. 3 + 2'1/2 + 1/2 = 

85. 0 - 0 = 

86. 0 - 0 ÷ ( 3 - 0 )  = 

87. 0 - 1/2 × ( 0 - 0 )  = 

88. 2 - 1 + 0 × 2 = 

89. 2 + ( 1'1/2 ÷ 2 ) ÷ 1 = 

90. 1/2 + 2 - 2 = 

91. 2 × 0 = 

92. 2 × 2 - 0 = 

93. 1 × 0 = 

94. 1 - ( 1 × 1 )  = 

95. 2 + 2 × ( 2 + 1 )  = 

96. 1/2 × 1 = 

97. 1 × × 1/2 ÷ 2 = 

98. 1 ÷ 2 = 

99. 1 ÷ 2'1/2 + ( 1 + 1 )  = 

100. 2 - 1 + 1 = 

生成答案:1. 1'1/2

2. 6

3. 0

4. 5'3/4

5. 0

6. 1

7. 0

8. 1'1/4

9. 2

10. 2/3

11. 2'1/2

12. 0

13. 0

14. 0

15. 2'1/2

16. 0

17. 1

18. 4

19. 1'1/4

20. 3

21. 7

22. 2'1/2

23. 8

24. 0

25. 2

26. 8

27. 7/8

28. 1

29. 4'1/2

30. 3

31. 2'1/4

32. 2'1/2

33. 3'1/2

34. 6

35. 6'3/4

36. 3

37. 3

38. 5

39. 1

40. 1/2

41. 1

42. 0

43. 2

44. 1'1/2

45. 0

46. 0

47. 3/4

48. 4

49. 1/2

50. 1

51. 1/2

52. 1

53. 4

54. 1/2

55. 2/5

56. 0

57. 3'1/2

58. 2

59. 1

60. 1

61. 6

62. 4

63. 0

64. 3

65. 5

66. 1

67. 0

68. 5

69. 0

70. 2'1/2

71. 1/2

72. 1/2

73. 4

74. 5'1/2

75. 2'1/2

76. 0

77. 0

78. 3/4

79. 3/4

80. 2

81. 4

82. 3

83. 2/5

84. 6

85. 0

86. 0

87. 0

88. 1

89. 2'3/4

90. 1/2

91. 0

92. 4

93. 0

94. 0

95. 8

96. 1/2

97. 1/4

98. 1/2

99. 2'2/5

100. 2

观察没有可通过交换律变成同一个式子的表达式。程序正确。

4)以上数据进行match,答案

Correct: 100(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100)

Wrong: 0()

明显这是正确的。

5)输入n=3r=10

表达式:

1. 4'1/2 × 3'1/2 = 

2. ( 7'5/7 + 3'1/2 ) ÷ 7'5/6 = 

3. 8'5/9 × 9 = 

结果:

1. 15'3/4

2. 1'142/329

3. 77

6)输入表达式同(5)输出的,

输入结果为

1. 0

2. 1'142/329

3. 77

输出为:

Correct: 2(2,3)

Wrong: 1(1)

因为修改了一个,所以这是正确的。

7)输入n=r=2

生成表达式:

1. ( 0 × 1 ) ÷ 1 = 

2. ( 0 ÷ 1 ) - 0 =

生成结果:

1. 0

2. 0

8)输入表达式

1. ( 0 × 1 ) ÷ 1 = 

2. ( 0 ÷ 1 ) - 0 =

输入结果

Correct: 0()

Wrong: 2(12)

9)输入n=5r=20

生成表达式:

1. 4 × 20'2/5 = 

2. 7'11/15 + 19'1/4 = 

3. 4'1/2 × 4'1/3 = 

4. 5 + ( 20 - 4'1/11 )  = 

5. 3'9/19 × 17'2/3 = 

生成结果:

1. 81'3/5

2. 26'59/60

3. 19'1/2

4. 20'10/11

5. 61'7/19

10)输入(9)的结果,match

输出

Correct: 5(1,2,3,4,5)

Wrong: 0()

 

综上,我的程序时正确的。

 

5

在个人项目中,我学会了c++的基本编程能力。以前从来没有用过c++,这次在四天之内,用c++写了一个近700行的程序,使用了很多编程的语法,对c++有了一定的掌握。

同时我对软件工程有了一定的了解,掌握了软件工程的基本步骤,懂得了复审、测试的技巧。

posted @ 2015-09-22 23:15  疾如风  阅读(210)  评论(2编辑  收藏  举报