2020软件工程作业03 2020软件工程作业03

2020软件工程作业03

 
 
软件工程
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
作业要求
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
作业目标
编写程序,完成作业
作业正文                                                      如下
参考文献
百度



1、Github项目地址

 

https://github.com/magicvie/test1/blob/master/20177715.html

2、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(min) 实际耗时(min)
Planning
计划
180
240
Estimate
估计这个任务需要多少时间
200
240
Development
开发
30
30
Analysis
需求分析 (包括学习新技术)
40
180
Design Spec
生成设计文档
30
20
Design Review
设计复审
20
10
Coding Standard
代码规范 (为目前的开发制定合适的规范)
40
60
Design
具体设计
30
60
Coding
具体编码
180
240
Code Review
代码复审
20
30
Test
测试(自我测试,修改代码,提交修改)
50
80
Reporting
报告
20
20
Test Repor
测试报告
20
10
Size Measurement
计算工作量
30
50
Postmortem & Process Improvement Plan
事后总结, 并提出过程改进计划
20
40
合计  
910
1290

三、解题思路

题目要求

1.实现一个命令行程序,不妨称之为Sudoku。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。

2.三宫格:盘面是3*3。使1-3每个数字在每一行、每一列中都只出现一次,不考虑宫。

3.用cmd命令行的形式读出写入文件,并传入参数。

4、实现过程

  自己太菜基础不扎实,到网上查找资料,给胡某大佬打电话求教,搞了好久没什么进展。。。。。。

  几乎完全搞不懂怎么写,到最后都没有达到规范

5.代码说明  

  import java.util. Scanner;

class NinePalace[

public

static void main(String[]

args)l

// 定义N为九宫格的行列数,需要输入

System. out printn("请输入九宫格的行列规模(只能是奇数的)");Scanner n = new Scanner(System in);

 int N;

//判断格局是否奇数( 可判断出偶数、负数及小数)

double d;

while (true){

d = n.nextDouble0;

N = (int)d;

if ((dN)>1.0E-4|N%2==0|N<0)

{System.out.printIn("输入出错格局只能是正奇数。请重新输入"):}

else break;

1/老师的九宫格填写方法

int[][] result = new int[N][N]; //定 义保存九宫格的数组

int row= 0;行初始位置

int col = N/2;列初始位置,因为列由0开始,故N/2 是中间位置for (int i=1; i<=N*N; i++){
result [row][col] = i;

rOW--;

col++; ;

if (row<0&&col>=N)(co1-- ;row+=2;] AF 7lẳšß#tÈ 5else if (row<0){ row = N-1;} //行越界

else if (col>=N){col = 0:}//列越界

3else if (result[row][col] != 0)(col--;row+=2;// iÆ

//打印出九宫格

for (int i=0; i<N;

i++)

for(int j=0; j<N; j++)(System.out.print(result[j][]+"t");)System.out. printlnO;
//我个人的填格方式

int[][] result2 = new int[N][N]://为免冲突, 重新new一个数组

result2[N/2]N/2] = (N*N+1)/2; /先把中间值赋予中间位置

row= 0; //定义 行及列的初始赋值位置。之前赋值的for对两个值有影响,故需

重新定位

col = N/2;

for (int i=1; i<=N*N/2; i++){

result2[row][co1] = i

//下面这句是把跟i对应的值放到格局对应的位置上result2[N-row-1][N-col-1] = N*N+1-i;

row--;

col++;
if (row<0){ row = N-1;} //行越界

else if (colI>=N){col = 0:}//列越 界

else if (result2[row][co1] != 0){o-row+=2:}/有冲突

//这方法不可能出现行列两边都越界的情祝,详情需要数学论证}

System.out.printlnO;

//1 再次打印出九宫格,以对比验证

for (int i=0; i<N; i++){

for(int j=0; j<N; j++){System.out. print(result2[][j]+"\t"):}System.out. printlnO;

}}

扫描二维码关注公众号,回复: 10285298 查看本文章

运行结果

 

软件工程
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
作业要求
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
作业目标
编写程序,完成作业
作业正文                                                      如下
参考文献
百度



1、Github项目地址

 

https://github.com/magicvie/test1/blob/master/20177715.html

2、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(min) 实际耗时(min)
Planning
计划
180
240
Estimate
估计这个任务需要多少时间
200
240
Development
开发
30
30
Analysis
需求分析 (包括学习新技术)
40
180
Design Spec
生成设计文档
30
20
Design Review
设计复审
20
10
Coding Standard
代码规范 (为目前的开发制定合适的规范)
40
60
Design
具体设计
30
60
Coding
具体编码
180
240
Code Review
代码复审
20
30
Test
测试(自我测试,修改代码,提交修改)
50
80
Reporting
报告
20
20
Test Repor
测试报告
20
10
Size Measurement
计算工作量
30
50
Postmortem & Process Improvement Plan
事后总结, 并提出过程改进计划
20
40
合计  
910
1290

三、解题思路

题目要求

1.实现一个命令行程序,不妨称之为Sudoku。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。

2.三宫格:盘面是3*3。使1-3每个数字在每一行、每一列中都只出现一次,不考虑宫。

3.用cmd命令行的形式读出写入文件,并传入参数。

4、实现过程

  自己太菜基础不扎实,到网上查找资料,给胡某大佬打电话求教,搞了好久没什么进展。。。。。。

  几乎完全搞不懂怎么写,到最后都没有达到规范

5.代码说明  

  import java.util. Scanner;

class NinePalace[

public

static void main(String[]

args)l

// 定义N为九宫格的行列数,需要输入

System. out printn("请输入九宫格的行列规模(只能是奇数的)");Scanner n = new Scanner(System in);

 int N;

//判断格局是否奇数( 可判断出偶数、负数及小数)

double d;

while (true){

d = n.nextDouble0;

N = (int)d;

if ((dN)>1.0E-4|N%2==0|N<0)

{System.out.printIn("输入出错格局只能是正奇数。请重新输入"):}

else break;

1/老师的九宫格填写方法

int[][] result = new int[N][N]; //定 义保存九宫格的数组

int row= 0;行初始位置

int col = N/2;列初始位置,因为列由0开始,故N/2 是中间位置for (int i=1; i<=N*N; i++){
result [row][col] = i;

rOW--;

col++; ;

if (row<0&&col>=N)(co1-- ;row+=2;] AF 7lẳšß#tÈ 5else if (row<0){ row = N-1;} //行越界

else if (col>=N){col = 0:}//列越界

3else if (result[row][col] != 0)(col--;row+=2;// iÆ

//打印出九宫格

for (int i=0; i<N;

i++)

for(int j=0; j<N; j++)(System.out.print(result[j][]+"t");)System.out. printlnO;
//我个人的填格方式

int[][] result2 = new int[N][N]://为免冲突, 重新new一个数组

result2[N/2]N/2] = (N*N+1)/2; /先把中间值赋予中间位置

row= 0; //定义 行及列的初始赋值位置。之前赋值的for对两个值有影响,故需

重新定位

col = N/2;

for (int i=1; i<=N*N/2; i++){

result2[row][co1] = i

//下面这句是把跟i对应的值放到格局对应的位置上result2[N-row-1][N-col-1] = N*N+1-i;

row--;

col++;
if (row<0){ row = N-1;} //行越界

else if (colI>=N){col = 0:}//列越 界

else if (result2[row][co1] != 0){o-row+=2:}/有冲突

//这方法不可能出现行列两边都越界的情祝,详情需要数学论证}

System.out.printlnO;

//1 再次打印出九宫格,以对比验证

for (int i=0; i<N; i++){

for(int j=0; j<N; j++){System.out. print(result2[][j]+"\t"):}System.out. printlnO;

}}

运行结果

 

猜你喜欢

转载自www.cnblogs.com/vie320/p/12593626.html