第3次作业
第3次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
作业目标 | 九方格的实现 |
作业正文 | 如下图 |
其他参考文献 | www.baidu.com |
1.Github:https://github.com/liaoping775
2.
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 100 | 200 |
Estimate | 估计这个任务需要多少时间 | 200 | 240 |
Development | 开发 | 700 | 1000 |
Analysis | 需求分析 (包括学习新技术) | 60 | 80 |
Design Spec | 生成设计文档 | 30 | 60 |
Design Review | 设计复审 | 30 | 50 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
Design | 具体设计 | 60 | 70 |
Coding | 具体编码 | 80 | 120 |
Code Review | 代码复审 | 10 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 40 | 10 |
Reporting | 报告 | 30 | 40 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 20 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 50 | 30 |
合计 | 1450 | 2000 |
3.解题思路
1.先上网查找关于九方格的算法。
2.写完代码进行静态检测。
3.进行检测和改进。
4.设计实现过程。
代码由1个类和3个函数组成。
流程图:
5.代码说明
随机数输入:
void start()
{
srand ( unsigned ( time (NULL) ) ); /* 产生random_shuffle的随机数种子 */
for( int i = 1 ; i <= 9 ; ++i )
for( int j = 1 ; j <= 9 ; ++j )
Initial_State[i][j] = 0 ;
{
srand ( unsigned ( time (NULL) ) ); /* 产生random_shuffle的随机数种子 */
for( int i = 1 ; i <= 9 ; ++i )
for( int j = 1 ; j <= 9 ; ++j )
Initial_State[i][j] = 0 ;
for( int i = 1 ; i <= 9 ; ++i )
Initial_State[1][i] = i ;
Initial_State[1][i] = i ;
random_shuffle( &( Initial_State[1][1]) , &( Initial_State[1][10]) ) ; /* 第一行随机排列产生 */
get_Initial_State( 2 , 1 ) ; /* 从第二行开始搜索 */
}
}
检测重复数:
for( int k = 1 ; k <= 9 ; ++k )
{
bool can = true; // can 变量用于记录数字k能否放在 ( i , j ) 处
for( int m = 1 ; m < i ; ++m )
if( Initial_State[m][j] == k ) // 检查同一列是否出现过数字k
{
can = false ;
break ;
}
if ( can )
for( int n = 1 ; n < j ; ++n )
if( Initial_State[i][n] == k ) // 检查同一行是否出现过数字k
{
can = false ;
break;
}
代码检测:
运行结果:
6.总结:
在这次活动中,我明白了进行软件开发会遇到很多的困难,同时也发现我有很多方面有明显的不足,比如这个代码就难倒了我,我知道了这些不足,有了方向进行改正,相信下次能做的更好。
这次我给自己的评分是9分。