1.Github项目地址

(https://github.com/Arno1999wu/homework)

2.PSP表格

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

3.思路

仅适用于三阶。
①对输入的数独逐行求和,第一个不为0的行即为第一个数所在,记录下第一个数3及其所在行,同理可找到第二个数2;
| 0 | 0 | 3 |
| 2 | 0 | 0 |
| 0 | 0 | 0 |


②对第二个数所在行进行逐列求和,和等于0即填入第一个数3,和等于第一个数即填入剩余的数1;
| 0 | 0 | 3 |
| 2 | 3 | 1 |
| 0 | 0 | 0 |


③回到第一个数所在行,逐列求和,和为第一个数即填入第二个数2,和为第二个数即填入剩余数1;
| 1 | 2 | 3 |
| 2 | 3 | 1 |
| 0 | 0 | 0 |


④到剩余行,每个空都为sum=6减去列求和的值;
| 1 | 2 | 3 |
| 2 | 3 | 1 |
| 3 | 1 | 2 |


当有多个数独时,传入一个参数n进行行的变换。
行求和函数

int row(int m, int *a, int r,int n)
{   int rsum = 0 , j;for (j = 0; j < m; j++)rsum += *(a + (__int64)r * m + 9 * (__int64)n + j);return rsum;
}

列求和函数

int column(int m, int *a, int c,int n)
{int csum = 0, i;for (i = 0; i < m; i++)csum += *(a + (__int64)m * i + 9* (__int64)n + c);return csum;
}

4.分析并消除所有的警告

VS2017通过以下步骤进行警告的分析

分析后产生4条一类警告(C26451)


通过以下操作消除了警告

5.性能分析


分析后发现从文件中读取数独耗费了太多cpu时间,但目前没想到方法改进

6.源代码

#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<math.h>
#include<string>using namespace std;//对行进行和处理
int row(int m, int *a, int r,int n)
{   int rsum = 0 , j;for (j = 0; j < m; j++)rsum += *(a + (__int64)r * m + 9 * (__int64)n + j);return rsum;
}
////对列进行和处理
int column(int m, int *a, int c,int n)
{int csum = 0, i;for (i = 0; i < m; i++)csum += *(a + (__int64)m * i + 9* (__int64)n + c);return csum;
}
//int main(int argc,char *argv[])
{//三阶盘面int m = atoi(argv[2]);if (m == 3)//atoi->将字符串转换为整型{int i, j, n = 0, sum = 0;//从input中导入数独ifstream fin("input.txt");ofstream fout("output.txt");int a[100][3];for (i = 1; i <=  3*(atoi(argv[4])); i++)for (j = 0; j < 3; j++){fin >> a[i - 1][j];}for (i = 1; i <= m; i++)sum += i;////填数while (n < atoi(argv[4])){int f_num = 0, s_num = 0, k = 0, r, c;for (i = 3 * n; (i - 3 * n) < m; i++)//找出第一个数的值及其所在行{r = row(3, (int*)a, i - 3 * n, n);if (r != 0){f_num = r;k = i;break;}}for (i = k + 1; (i - 3 * n) < m; i++)//找出第二个数的值{r = row(3, (int*)a, (i - 3 * n), n);if (r != 0){s_num = r;break;}}for (j = 0; j < m; j++)//将第二个数所在行填满{c = column(3, (int *)a, j, n);if (c == 0)a[i][j] = f_num;if (c == f_num)a[i][j] = (sum - f_num - s_num);}for (j = 0; j < m; j++)//回到第一个数所在行填满{if (a[k][j] == 0){c = column(3, (int *)a, j, n);if (c == f_num)a[k][j] = s_num;if (c == s_num)a[k][j] = (sum - f_num - s_num);}}for (i = 0; i < m; i++)//将剩余一行填满{r = row(3, (int *)a, i, n);if (r == 0){for (j = 0; j < m; j++){c = column(3, (int *)a, j, n);a[i + 3 * n][j] = sum - c;}}}//n++;//输出填好的数独if (n == atoi(argv[4])){for (i = 1; i <=  30; i++)for (j = 0; j < 3; j++){fout << a[i - 1][j] << " ";if (j == 2){fout << endl;if ((i % 3) == 0)fout << endl;}}fin.close();fout.close();cin.get();}//}exit(0);}//elsecout << "can't deal" << endl;return 0;
}

输入


输出

7.总结收获

通过这次经历,学会了VS2017的基本使用、Github采集仓库文件夹及上传本地文件,C++的一些操作以及一些七七八八的东西,从没想过一周内可以学怎么多新知识,果然,压力也是动力。
我发现虽然有很多东西不懂,但只要锲而不舍的去查去学,总能有所收获。
通过这次,我深刻的体会到计划是多么重要,刚开始没计划,想到什么些什么,调我这次从三阶开始想,想到一个方法就很快开始写,写完之后才发现这个方法根本无法扩展到高阶,而时间又不允许重新开始写,
导致这次的结果只能解决三阶问题,而且调试的时候也很痛苦,以后一定得提前规划好。

转载于:https://www.cnblogs.com/wu1999/p/11588164.html

软件工程实践2019第三次作业相关推荐

  1. 《软件工程实践》第三次作业-原型设计(结对第一次)

    解决方案: COMPUTER VISION PLUS -- 计算机视觉门户网站 零.基本情况 作业链接:原型设计(结对第一次) 学号: 魏璐炜031602136 徐明盛031602139 原型点我 P ...

  2. 软件工程实践2019第四次作业

    结对成员 031702208 031702212 需求分析--NABCD模型 N--Need 根据题目归纳痛点: 教师方面 偶尔想了解毕业学生的工作.发展情况,但没有适合的方式 新生方面 不知道如何选 ...

  3. 【软件工程实践 · 团队项目】 第一次作业

    [软件工程实践 · 团队项目] 第一次作业 Part 0 · 简 要 目 录 Part 1 · 队 伍 阵 容 Part 2 · 会 议 记 录 相 关 Part 3 · 会 议 讨 论 记 录 Pa ...

  4. BUAA OO 2019 第三单元作业总结

    目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架 ...

  5. 软件工程python就业方向-软件工程实践2019第二次作业

    前言 自己在第一次作业中写下的目前最想学的技术是**"学习好软件方向的各种技术,熟练运用编程语言"**.再怎么说,这也太过宽泛了,而且想在一学期做到这一点是不现实的.自己曾在大一系 ...

  6. 软件工程实践专题第三次团队作业

    "代取吧"ER图及数据字典 一.ER图 2.数据字典 转载于:https://www.cnblogs.com/coolerkiller/p/10868695.html

  7. 软件工程实践2019第一次作业

    我的初心 当初为什么报计算机科学与技术这个专业? 个人一直是个很佛系的人,没有什么很喜欢或者很讨厌的专业.刚好高考成绩处于一种很尴尬的境地,需要高分的专业去不了,分数又比切线分数较低的专业高些,就正好 ...

  8. 软件工程实践2017结对第二次作业

    结对成员:吴君毅(031502629),吴伟根(031502631) Github链接:https://github.com/n9705/Dep-Stu 一. 题目要求 构造部门和学生输入数据的生成程 ...

  9. 软件工程(2019)第一次结对作业

    审查人以及代码信息 (1)结对人:张斯豪 (2)项目代码地址:代码地址 (3)项目代码功能:游戏 审查代码细节汇总 按照C++代码审查表审查汇总如下 功能模块名称 简单的游戏框架 审查人 高钰清 审查 ...

最新文章

  1. python 命令行参数-Python处理命令行参数
  2. anaconda python 版本对应关系
  3. IAR FOR ARM 各版本号,须要的大家能够收藏了
  4. sudo及其配置文件sudoers
  5. OC-变量和数据类型
  6. 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)
  7. 阿里北大:深度哈希算法最新综述
  8. Ppmap - XSS扫描器
  9. 你了解实时3D渲染吗?实时渲染软件和应用场景科普来了
  10. java数组循环动态赋值_Java数组
  11. 微弱信号放大电路(电磁超声)
  12. POS系统example.launch 的位置_关于信用卡用户使用个人POS机的建议!
  13. 工作中个人注册的媒体账号离职要归公司所有?
  14. 【面试】剑指OFFER
  15. python_10_绘制图表
  16. 计算机网络中表征数据传输有效性的指标是,表征数据传输有效性的指标是
  17. 我不需要保险,全家都不需要
  18. 人声抑制 深度学习_一种融合骨振动传感器和麦克风信号的深度学习语音提取和降噪方法与流程...
  19. igraph的layout布局
  20. el-table增加顶部滚动条,表格实现上下双滚动条

热门文章

  1. 从零开始自制实现正则引擎 全流程记录
  2. Sentry搭建和使用
  3. 关于SPWM 和SVPWM调制比和电压利用率的理解总结——基础补充(一)
  4. 笔录:ERP运维理论
  5. 新手必学的Python自动化办公教程,掌握你就是行业高手
  6. 利用Solidworks做一些液压阀块的设计库
  7. 【计算机网络】常见的HTTP报文头部信息
  8. pcb外观维修_SMT外观维修
  9. Kali下常用安全工具中文参数说明(160个)
  10. 网络相册管理系统java,网络相册管理系统的设计.doc