向 9319074 送花的會員:
|
magicwoo (2009-10-07)
感謝您發表一篇好文章 |
2009-10-09, 01:06 AM | #16 (permalink) |
長老會員
|
第一題
A(0,0)位於 1204(8)= 644(10) A(2,2)位於 1244(8)= 676(10) 2者的位置相差了 32.... 而題目並沒有提到 每個元素佔用多少空間,因此一般來說, d=1 接著我們得先算出 陣列的大小 依照你的書本...第二張圖的公式 若陣列大小為:A(s1 : u1, s2 : u2) 則... 陣列的列數為:u1 - s1 + 1 陣列的行數為:u2 - s2 + 1 而計算位址A(i,j)的公式為 A0 + ((i - s1) * n * d) + (( j - s2 ) * d) 或是 A0 + ((i - s2) * m * d) + (( j - s1 ) * d) 用第一種來算的話... 因為A(0,0)一般來說是最小的位置,再加上課本沒有額外設定 負數的座標,所以可以確定 s1=0, s2=0 將A(2,2)帶進公式計算 676 = 644 + ((2 - s1) * n * 1) + (( 2 - s2 ) * 1) 32 = (2 - s1)n + 2 - s2 30 = (2 - s1)n - s2 0 = (2 - s1)n - s2 - 30 0 = 2n - 30 n = 15 (行數有15行) 最後可以知道陣列大小為 A(0:m, 0:14) 也因為題目只問到A(3,3),所以可以假設 m為4 ~ 無限大... 也就是說整個陣列是... A(0:3, 0:14) A(0:4, 0:14) A(0:5, 0:14) ... ... A(0:100, 0:14) ... A(0:無限大, 0:14) 故...一個一個列出來的話... A(0:0) = 644 A(0:1) = 645 ... A(0:10) = 654 ... A(0:14) = 658 A(1:0) = 659 A(1:1) = 660 ... A(1:14) = 673 A(2:0) = 674 A(2:1) = 675 A(2:2) = 676 ... A(2:14) = 688 A(3:0) = 689 A(3:1) = 690 A(3:2) = 691 A(3:3) = 692(10進位) = 1264(8進位) 如果要直接套公式... 計算位址A(3,3)的公式 A0 + ((i - s1) * n * d) + (( j - s2 ) * d) = 644 + ((3 - 0) * 15 * 1) + (( 3 - 0 ) * 1) = 644 + 45 + 3 = 692(10進位) = 1264(8進位) ================================ 我在算題目時,基本上是不用公式的, 但你現在學的還沒有到程式部份,還是理論,所以必須要去了解公式在寫些什麼... 不然後面什麼都不用玩了... 課本的題目都是依順序排列的, 第一題沒有算出來,第二題一定看不懂,第三題也不用看了... 後面就都完了... (公式看不懂要問老師, 不要什麼都不問, 再不然問妹妹也可以呀) |
__________________ 姜太公釣魚~ 願者上鉤 |
|
送花文章: 4036,
|
2009-10-09, 02:01 AM | #17 (permalink) |
長老會員
|
第三題,
用公式來導... A(0: m-1, 0:n-1) 已知 s1 = 0, s2 = 0 接著已知 A(3,2) 在1110, A(2,3) 在1115 且元素佔一個空間,意即 d = 1 帶入公式(我繼續用第一題的公式) A(i,j) = A(0,0) + ((i - s1) * n * d) + (( j - s2 ) * d) A(i,j) = A(0,0) + ((i - 0) * n * 1) + (( j - 0 ) * 1) A(i,j) = A(0,0) + (i * n) + j (以上是簡化後的結果) A(3,2) = A(0,0) + (3 * n) + 2 = 1110 → A(0,0) + (3 * n) + 2 = 1110 → A(0,0) + (3 * n) = 1108 → A(0,0) = 1108 - (3 * n) A(2,3) = A(0,0) + (3 * n) + 2 = 1115 → A(0,0) + (2 * n) + 3 = 1115 → A(0,0) + (2 * n) = 1112 → A(0,0) = 1112 - (2 * n) 再將2者 拿來比較 1108 - (3 * n) = 1112 - (2 * n) 1108 - n = 1112 可以得到 n = -4 ...(行數是-4.........) ...到這裡出了問題了 因此,這個陣列【並不是 以列為主】 ======================== 算我倒楣!!(對你來說是幸運,可以看到用錯公式時的情形) ... 所以,再重算一次,改用另一個公式,以行為主 A(i,j) = A(0,0) + ((j - s2) * m * d) + (( i - s1 ) * d) A(i,j) = A(0,0) + ((j - 0) * m * 1) + (( i - 0 ) * 1) A(i,j) = A(0,0) + (j * m) + i (以上是簡化後的結果) A(3,2) = A(0,0) + (2 * m) + 3 = 1110 → A(0,0) + (2 * m) + 3 = 1110 → A(0,0) + (2 * m) = 1107 → A(0,0) = 1107 - (2 * m) A(2,3) = A(0,0) + (3 * m) + 2 = 1115 → A(0,0) + (3 * m) + 2 = 1115 → A(0,0) + (3 * m) = 1113 → A(0,0) = 1113 - (3 * m) 1107 - (2 * m) = 1113 - (3 * m) 1107 = 1113 - m m = 6 因此...陣列大小A(0 : m-1, 0 : n-1) 就是 A(0:5, 0: n-1) 由於題目只問到 A(1:4),所以 n 大於 4... n=5,6,7... n=無限大 也可以 (在這裡... n 用不到了...) 接下來,算一下A(0,0)的位置... A(3,2) = A(0,0) + (2 * m) + 3 = 1110 A(3,2) = A(0,0) + (2 * 6) + 3 = 1110 A(3,2) = A(0,0) + 15 = 1110 A(0,0) = 1110 - 15 = 1095 A(2,3) = A(0,0) + (3 * m) + 2 = 1115 A(2,3) = A(0,0) + (3 * 6) + 2 = 1115 A(2,3) = A(0,0) + 20 = 1115 A(0,0) = 1115 - 20 = 1095 經由上面2個座標比對,確定A(0,0)是1095 最後,再計算 A(1,4)的值 A(1,4) = A(0,0) + (j * m) + i A(1,4) = 1095 + (4 * 6) + 1 A(1,4) = 1095 + 25 A(1,4) = 1120 !!!! (明明應該是你自己要看的公式,你自己都掃瞄了,也貼上來了 結果變成是我得幫你寫出來...........唉..........) 上面這一題的陷阱就是 【以行為主】 v.s 【以列為主】 而要弄的懂,最好是把第二題,也算一算.... 也就是說:最好是從第一題開始算,算完之後再算第二題,再算第三題... 當你全部的習題都會算的時候,你這一章才能算是 真的了解了.... 而你如果中間的題目就這麼跳過去,不看了, 那你後面的章節只會更痛苦..... (很多資工科系,資管科系的學生 之所以會裁在程式設計的課程, 就是因為一開始沒弄懂,後面更痛苦,最後放棄....) |
送花文章: 4036,
|
2009-10-09, 03:36 AM | #18 (permalink) |
長老會員
|
上面的公式算法講完, 接下來講一般的(當你不知道公式,而又需要了解陣列計算結果時, 用Excel來模擬是最方便的) Excel 是由 A,B,C,D..以及1,2,3,4所組成的表格, 其呈現方式就如同二維陣列一樣 A1, B1, C1, D1..... A2, B2, C2, D2..... A3, B3, C3, D3..... 因此,用Excel來模擬陣列配置時,就可以配置出 [A,1], [B,1], [C,1], [D,1], [E,1], [F,1], [G,1], [H,1]... [A,2], [B,2], [C,2], [D,2], [E,2], [F,2], [G,2], [H,2]... [A,3], [B,3], [C,3], [D,3], [E,3], [F,3], [G,3], [H,3]... [A,4], [B,4], [C,4], [D,4], [E,4], [F,4], [G,4], [H,4]... [A,5], [B,5], [C,5], [D,5], [E,5], [F,5], [G,5], [H,5]... ... ...(上面的A1, B1, C1,就是下面陣列的 A[0,0], A[1,0], A[2,0] ...已經知道A[2,3]是1115以及A[3,2]是1110時,就把數字填到上面的Excel方格內 ...填入 ...再直接用人工去一格一格的算 ... A[0,0],A[1,0],A[2,0],A[3,0],A[4,0] .... A[0,1],A[1,1],A[2,1],A[3,1],A[4,1] .... A[0,2],A[1,2],A[2,2],A[3,2],A[4,2] .... A[0,3],A[1,3],A[2,3],A[3,3],A[4,3] .... A[0,4],A[1,4],A[2,4],A[3,4],A[4,4] .... 我再幫你畫一張圖好了(用Excel模擬的) 此帖於 2009-10-09 03:48 AM 被 cwvdavid 編輯. |
送花文章: 4036,
|
向 cwvdavid 送花的會員:
|
9319074 (2009-10-09)
感謝您發表一篇好文章 |
2009-10-09, 04:05 AM | #19 (permalink) |
長老會員
|
第5題
A(1) = A[1,1] A(2) = A[1,2] A(3) = A[2,2] A(4) = A[2,1] =========== A(5) = A[1,3] A(6) = A[2,3] A(7) = A[3,3] A(8) = A[3,2] A(9) = A[3,1] =========== A(10) = A[1,4] A(11) = A[2,4] A(12) = A[3,4] A(13) = A[4,4] A(14) = A[4,3] A(15) = A[4,2] A(16) = A[4,1] =========== A(17) = A[1,5] A(18) = A[2,5] A(19) = A[3,5] A(20) = A[4,5] A(21) = A[5,5] A(22) = A[5,4] A(23) = A[5,3] A(24) = A[5,2] A(25) = A[5,1] ... ... 以此類型,自己找一下數值之間的共通性吧 |
送花文章: 4036,
|
向 cwvdavid 送花的會員:
|
9319074 (2009-10-09)
感謝您發表一篇好文章 |
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
心測 - 衣服顏色看你走什麼運 | crd1871 | 星座命理討論區 | 5 | 2007-08-20 02:03 AM |
最近想買notebook, 有經驗的人來幫忙討論一下唄... | vanderwall | 硬體疑難使用問題討論區 | 3 | 2004-10-07 10:33 PM |