软件工程实践2019第三次作业

一·github项目地址

https://github.com/clown888mob/031702609

二·PSP表格

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

三·设计思路

看到题目的第一瞬间,有点儿晕厥,说实话因为代码能力不太行,所以遇到题干长材料多的题目,第一反应就是害怕!看了半天的题目,发现我还是只能停留在很早以前的题目基础,之前做的训练题有用二维数组来输出倒三角正三角的题目。我感觉有一点点共同性,于是就从二维数组着手,先从三宫格开始,三宫格的话就比较简单了,基本思路都在代码里有注释.这个解题思路其实是依靠了同学的思路,我自己的总是出错甚至形不成完整的代码,所以最后采用了她的解题大纲,目前的代码能力只允许用最简单的基础代码和最笨拙的方式来解决问题。


/*#define _CRT_SECURE_NO_DEPRECATE*/
#include<iostream>

using namespace std;
int main()
{
	int a[3][3], n = 0;
	for (int i = 0; i < 3; i++)/*定义二维数组输入盘面*/
	{
		for (int j = 0; j < 3; j++)

		{
			cin >> a[i][j];

			if (a[i][j] == 0)/*n记录0的个数*/

			{

				n++;

			}

		}

	}

	for (int an = 0; an < n; an++)/*n的大小及循环的次数*/

	{

		for (int i = 0; i < 3; i++)

		{

			for (int j = 0; j < 3; j++)

			{

				if (a[i][j] == 0)

				{

					int b[5], k = 0;/*b数组中存放目前该格子里已有的数值*/

					for (int x = 0; x < 3; x++)/*盘面的纵向已有值*/

					{

						if (a[x][j] != 0)

						{

							b[k] = a[x][j];

							k++;

						}

					}

					for (int y = 0; y < 3; y++)/* 盘面的横向已有值 */

					{

						if (a[i][y] != 0)

						{

							b[k] = a[i][y];

							k++;

						}

					}

					int c[3] = { 1,2,3 }, x1 = 3;/*x1表示目前该格数值的可能情况*/

					for (int c1 = 0; c1 < 3; c1++)
					{

						for (int c2 = 0; c2 < k; c2++)

						{

							if (c[c1] == b[c2] && c[c1] != 0)

							{

								c[c1] = 0;

								x1--;

							}

						}

					}

					if (x1 == 1)/*x1=1表示目前该格子的数值只有一种可能*/

					{

						for (int s = 0; s < 3; s++)

						{

							if (c[s] != 0)

							{

								a[i][j] = c[s];

							}

						}



					}

				}

			}

		}

	}



	cout << endl;

	for (int i = 0; i < 3; i++)/*输出*/

	{

		for (int j = 0; j < 3; j++)

		{

			cout << a[i][j] << " ";

		}

		cout << endl;

	}

	cout << endl;
}

测试实例:



作业要求用Visual Studio来进行测试和运行,但是我运行的结果一直出错,对这个软件用的还不是很熟练,还在摸索阶段,有点儿艰难,学东西有点儿慢

四·心得体会

完整的代码依靠扎实的语言功底和清晰的数学解题方式,一直以来代码都是比较害怕的课程,有在努力学习,但是很多时候心有余而力不足,完成一道复杂完整的代码对于我来说尚且存在难度,不过在解题的过程中还是能够学到一些新的东西的,希望可以越来越进步吧。

posted @ 2019-09-25 22:58  jellyss  阅读(162)  评论(2编辑  收藏  举报