Re: 計程作業
※ 引述《latinboy (東邊日出西邊雨)》之銘言:
: ※ 引述《latinboy (東邊日出西邊雨)》之銘言:
: 題目在課本470頁13題
: do 重復10次
: do i=1,5
: do j=1,5
: 找出i,j座標周圍有幾個活鄰居
: 如果a(i,j)是活的 ,以鄰居個數決定存活與否(2~3活 其他死)
: 如果a(i,j)是死的 ,以鄰居個數決定復活與否(3復活)
: 將結果丟到雙生陣列(如b() )
: 將雙生陣列(b())print出來
: continue
: 然後以雙生陣列為主體,再重復上面的動作一次(即將上面ab互換)
: continue
計算活鄰居個數的重點提示。
1.可使用CHARACTER*1 BOARD(5,5)儲存盤面。' '表空格,'X'表有life。
因為BOARD是字元所以可直接輸出。
2.BOARD(I,J)的八個鄰居如下:
BOARD(I,J+1),BOARD(I+1,J),BOARD(I+1,J+1),BOARD(I-1,J+1),
BOARD(I,J-1),BOARD(I-1,J),BOARD(I-1,J-1),BOARD(I+1,J-1)
3.先檢查鄰居是否在版面範圍內(即檢查陣列駐標是否合理)
再檢查該位址是否有life。
如仍有疑問請參考下列程式片段。NEIGHBORS這個FUNCTION計算
在BOARD中(ROW,COL)位置周圍的life數。
INTEGER FUNCTION NEIGHBORS(BOARD, ROW, COL, DIM)
IMPLICIT NONE
INTEGER ROW, COL, DIM
CHARACTER*1 BOARD(DIM, DIM)
INTEGER XDIR(8)
INTEGER YDIR(8)
DATA XDIR /1, 1, 0, -1, -1, -1, 0, 1/
DATA YDIR /0, 1, 1, 1, 0, -1, -1, -1/
INTEGER I, N, NX, NY
N = 0
DO 10 I = 1, 8
C NX = COL + XXXX(X)
C NY = ROW + XXXX(X)
C IF (XX .XX. X .XXX. XX .XX. XXX .AND.
C + XX .XX. X .XXX. XX .XX. XXX) THEN <- 馬賽克處理
C IF (XXXXX(XX, XX) .XX. 'X') THEN
C X = X + 1
C ENDIF
C ENDIF
10 CONTINUE
NEIGHBORS = N
RETURN
END
--
台灣大學資訊工程系 劉邦鋒
--------------------------
合理的小考是訓練,不合理的小考是磨練。
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.109.224.63
※ 編輯: pangfeng 來自: 140.109.224.63 (12/01 17:36)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):