VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

[原創]楊輝三角形 ( PASCAL 三角形 )

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 1 樓

發表發表於: 星期五 一月 23, 2004 9:59 pm    文章主題: [原創]楊輝三角形 ( PASCAL 三角形 ) 引言回覆

代碼:

FUNCTION F_PascalTriangle
* 楊輝三角形 ( PASCAL 三角形 )
* ------------------------------------------------- *
* 2004.01.23 朱育興 YSC E-MAIL:y5096@ms23.hinet.net
* ------------------------------------------------- *
LPARAMETERS L_nFrequency
LOCAL W1_cSString,W1_cCString,W1_nFrequency,W1_nMaxWidth,W1_aFrequency
LOCAL W1_nSUB_A,W1_aOneOfFrequency,W1_nSUB_B,W1_nLen,W1_cString

IF !TYPE("L_nFrequency") = "N"
  L_nFrequency = 0
ENDIF
W1_cSString   = " 0123456789"             && 供 CHRTRANC 函數使用
W1_cCString   = " 0123456789"  && 同上
W1_nFrequency = INT(ABS(L_nFrequency))    && 次方數
W1_nMaxWidth  = 1                         && 最大位數

*
DIMENSION W1_aFrequency[W1_nFrequency+1,W1_nFrequency+1]
STORE 0 TO W1_aFrequency

* 處理 0 次方
W1_aFrequency[1,1] = 1

* 處理 1 到 W1_nFrequency 次方
FOR W1_nSUB_A = 1 TO W1_nFrequency
  DIMENSION W1_aOneOfFrequency[1,W1_nFrequency+1]
  STORE 0 TO W1_aOneOfFrequency
  FOR W1_nSUB_B = 1 TO W1_nFrequency
    W1_aOneOfFrequency[1,W1_nSUB_B+1] = W1_aFrequency[W1_nSUB_A,W1_nSUB_B]
  ENDFOR
  FOR W1_nSUB_B = 1 TO W1_nFrequency+1
    W1_aFrequency[W1_nSUB_A+1,W1_nSUB_B] = W1_aFrequency[W1_nSUB_A,W1_nSUB_B] + ;
                                           W1_aOneOfFrequency[1,W1_nSUB_B]
    W1_nLen = LEN(LTRIM(STR(W1_aFrequency[W1_nSUB_A+1,W1_nSUB_B])))
    W1_nMaxWidth = MAX(W1_nMaxWidth,W1_nLen)
  ENDFOR
ENDFOR

FOR W1_nSUB_A = 1 TO W1_nFrequency+1
  ? REPLICATE(" ",(W1_nFrequency+1-W1_nSUB_A)*W1_nMaxWidth)
  FOR W1_nSUB_B = 1 TO W1_nFrequency+1
    IF W1_aFrequency[W1_nSUB_A,W1_nSUB_B] = 0
      EXIT
    ENDIF
    W1_cString = LTRIM(STR(W1_aFrequency[W1_nSUB_A,W1_nSUB_B]))
    ?? CHRTRANC(PADL(W1_cString,W1_nMaxWidth),W1_cSString,W1_cCString)
    IF !W1_nSUB_B = W1_nFrequency + 1
      ?? REPLICATE(" ",W1_nMaxWidth)
    ENDIF
  ENDFOR
ENDFOR
RETURN SPACE(0)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作