• 个人实验分析博客


    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++有了一定的掌握。

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

  • 相关阅读:
    weka中算法说明[转]
    浅入浅出JS中的eval及json
    JavaScript变量声明提前
    三种常用的js数组去重方法
    深入理解JavaScript的变量作用域
    调试工具--console用法收藏
    《js高级程序设计》--第三章数据类型
    Oracle数据备份和恢复
    Oracle归档日志管理
    Oracle字符集的设置
  • 原文地址:https://www.cnblogs.com/jirufeng/p/4830875.html
Copyright © 2020-2023  润新知