基本上小女子是個程設白痴,連基本的觀念我也不太清楚 !! 上學期被當了!!這學期卻還得必修程式設計(二),這個問題是作業 !! 看看有無好心人,願意幫我!! 讓我好交作業~~ >_< 三Q 拜託 !!
附件是一大小為 7 列的 Pascal 三角形, 所謂
Pascal三角形是指其中每一個數字均是該數字正上方與左上方兩個數字的總和(若該位置沒有數字則視為0). 請撰寫一函式,
int ** pascalTriangle(int size);
該函式在給於一個size參數後, 能夠產生一個Pascal三角形(以ragged array表示), 並傳回指向該陣列的指標.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
2005-04-28 18:06:36 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
1.要用一個“ragged array”. “ragged array”就是一個2次元的陣列. 在此陣列裡每一行的長度都不是等長. 因是2次元的陣列所以要用2個迴圈
2.要在“ragged array”裡產生一個Pascal三角形. 也就是說P[i][j] = a + b. a平常是P[i-1][j-1]. 而B平常是P[i-1][j]. 不過如果i-1小於0那就變成P[i][j] = 1. 如果j-1小於0那A就變成0. 如果j是這行最後一個數, 那B就變成0.
好了以上便是做只程式的概念. 來做程式吧
已知:
1.int ** pascalTriangle(int size).
宣告區:
1.宣告一個int的指標的指標的變數叫p. p是我們要的“ragged array”
2.宣告一個int的變數叫i. i是用於第一個迴圈
3.宣告一個int的變數叫j. j是用於第一個迴圈
4.宣告一個int的變數叫a. a是來算p[i][j]的
5.宣告一個int的變數叫b. b是來算p[i][j]的
code:
1.用new(malloc)來宣告一個有size個int的指標的陣列. 把new(malloc)傳回來的數存入p裡. 因size裡的值告訴我們這ragged array有幾行
2.上一步已經把p宣告好有幾行, 所以我們現在要用一個迴圈從第一行走到最後一行, 一行一行的來處理. 第一個迴圈由此開始. i從0開始. 因為我們有size行, 所以如果i < size的話我們就要繼續執行下去. 因i是從0走到size, 所以i++. (往上走嘛)
3.用new(malloc)來宣告一個有i個int的陣列. 把new(malloc)傳回來的數存入現在正在處理的這行(p[i])裡. 因i告訴我們這行有幾個數. 例第一行有1個數, 第二行有2個數…
4.上一步已經把這行宣告好有幾數, 所以我們現在要用一個迴圈從第一個數走到最後一個數, 一個數一個數的來處理. 第二個迴圈由此開始. j從0開始. 因為我們有i個數, 所以如果j <= i的話我們就要繼續執行下去. 因j是從0走到i, 所以j++. (往上走嘛)
5.好, 現在有開始算p[i][j]裡的數了. 照第二個概念, 如果i – 1 < 0那p[i][j]就是1
6.不然就執行以下步驟
7.如果j-1<0, 那a就是0, 不然a等於p[i-1][j-1]
8.如果j是這行最後一個, 那b就是0, 不然b等於p[i-1][j]
9.a和b算好了之後把a和b的合存入p[i][j]裡
10.第二個迴圈在此結束
11.第一個迴圈在此結束
12.迴傳p.
13.函式結束
照這樣做應很容易. 自己照著試試看吧… :)
懂嘛?不懂請再問
2005-04-28 20:59:09 · answer #1 · answered by 龍 7 · 0⤊ 0⤋
利用數學裡面的C就可以把這個寫出來了…
C10=1 C11=1
C20=1 C21=2 C22=1
C30=1 C31=3 C32=3 C33=1
.......................................
.......................................
試著寫看看吧!
2005-04-30 12:20:26 · answer #2 · answered by 風林 1 · 0⤊ 0⤋