if (mine[i][j]=='.')
fprintf(fptr2, "%d", calcMineNumber(i,j));
else
fprintf(fptr2, "*");
這裡的calcMineNumber(i,j)是一個函數,負責計算第 i 列和第 j 行的週遭八個位置有多少是雷。其C語言完成碼如下。
int calcMineNumber(int i, int j)
{
int sum=0;
sum += addMine(i-1, j-1);
sum += addMine(i-1, j);
sum += addMine(i-1, j+1);
sum += addMine(i, j-1);
sum += addMine(i, j+1);
sum += addMine(i+1, j-1);
sum += addMine(i+1, j);
sum += addMine(i+1, j+1);
return sum;
}
這個函數的概念簡單清楚,只是加總外圍八個位置的佈雷情形。至於i,j合理與否並不考慮,這種模組式的考慮,可以將問題拆解成容易理解的程度。
這時addMine就是決定i,j是否合理的地方,其C語言程式碼如下。
int addMine(int i, int j)
{
if (i<0||j<0||i>=row||j>=column)
return 0;
if (mine[i][j]=='*')
return 1;
else
return 0;
return 0;
}
希望大家在完成這個題目後,對問題的模組化能有進一步的體會。
期末作業題目
回到作業目錄
回到首頁
沒有留言:
張貼留言