2019軟體工程實踐第三次作業

2022-05-22 04:18:09 字數 2040 閱讀 7301

(只能用於三宮格的菜鳥**)

psp**

psp預估耗時(小時)

實際耗時(小時)計畫1

0.5估計這任務需要多少時間

2719開發3

2需求分析31

生成設計文件12

設計複審

20.5

**規範

1.50.5

具體設計

20.5

具體編碼63

**複審35

測試22報告

11測試報告

10.5 

計算工作量

10.5

事後總結,並提出過程改進計畫

0.50.5

合計27

19因為這次只做了三宮格的,所以實際完成時間比預計少很多

我的解題思路

解三宮格數獨

1、找出盤面上已知兩個數的兩行兩列,把這兩個交叉點填上

2、遍歷所有行,遇見有兩格已知點的,就把剩下一格補上,有的行全空的,就跳過

3、遍歷所有列,把每一列剩下那格補上

上**

int a[3][3];                    //用來存放表盤的二維陣列

int row[2] = ; //用來存放已知數的行

int line[2] = ; //用來存放已知數的列

int b[2]; //用來存放已知點

const int c[3] = ;

這個是輸入函式

1

void

input()219

}20}21 }

這個是填上交叉點的函式

void search()

} for (int i = 0; i < 2; i++)}}}

行遍歷函式

void hang()

if (temp == 2) //找出有兩個已知數的行

}for (int f = 0; f < 3; f++) //將剩下那個數填入空格中

}y = 6; //每一重迴圈完畢,記得把y歸為6

} else

continue;

}}

列遍歷和行遍歷相似,所以不放**了。

我在這裡定義了乙個臨時變數y,用來計算空缺的那個數。因為剛好1+2+3=6,減去已知的數字,結果就是未知的那個。(運氣好,剛好遇到這種情況,所以這只能用於三宮格)

之前我的方法是遇到已知數,然後把c陣列裡面的那個已知數置0,然後乙個小迴圈把非0的那個數找出來,就是未知數。但是問題來了,後面這個c陣列就不能變回,就不能繼續用了,就算我在第一重迴圈下面加了個int c[3]=;也沒用。

後面我又想了一下,不如把c陣列當作「工具人」,就用來比較是否相等,再在這函式裡定義乙個同為的陣列,用來修改為0。但是這個在函式裡定義的陣列,也是和c陣列一樣的啊,二重迴圈一次過後回不到初始狀態了,被自己蠢到了。

然後我又想到,既然未知數是0,那麼拿來和比較,已知數肯定能找到相等的,找不到相等的就是未知數咯。愚蠢的我忘記這是個二重迴圈,假如已知數中有個3,那麼它和1比較,肯定不相等啊,就被當作未知數處理了。(再一次被自己蠢到,double kill)

我為什麼這麼執著於在陣列裡改資料呢,因為這樣就可以應用到5宮這種7宮這種不用考慮宮的環境啦。

**除錯階段

測試樣例

軟體工程實踐2019第三次作業

github psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 小時 planning 計畫1h 0.5h estimate 估計這個任務需要多少時間 22h21h development 開發5h 3hanalysis 需求分析 包括學習新技...

軟體工程實踐2019第三次作業

psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫60min 60min estimate 估計這個任務需要多少時間 24h25h development 開發5h 3hanalysis 需求分析 包括學習新技術 2...

軟體工程實踐2019第三次作業

personal software process stages 預估耗時 分鐘 實際耗時 分鐘 計畫1000 1480 這個任務需要多少時間 1000 1480 開發6060 需求分析 包括學習新技術 360400 生成設計文件 6060 設計複審 6060 規範 6060 具體設計 260360...