看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《APE36 (PT鄉民)》之銘言: : 1. : A(3,3)=121 , A(6,4)=159 請問A(4,5)之位址為多少?? : Ans:192 : 2. : A(1,1)=2 , A(2,3)=18 , A(3,2)=28 請問A(4,5)之位址為多少?? : ANS: 46 : 3. : 陣列A(1:6,1:4,1:2) , a=200 , d=1 , 請問A(4,2,2)之位址為多少? : 有人能幫忙解詳細步驟嗎??感謝!! 有看沒有懂~.~ 第三題小弟較不確定,如果有誤請見諒 看到題目如果是二維的陣列 則可以先試著先從座標位置的大小關係來判斷row or column major 若無法直接判斷則需要直接去計算、嘗試 1. 此題本身沒給陣列的行數和列數 而元素大小的部分,我不確定是忘了給還是怎樣 但就此題答案看,元素大小為1... 由於此題從大小關係無法判斷何種major 所以直接下手計算 設陣列為m*n consider column-major:A(6,4) = A(3,3) + [(4-3)*m+(6-3)] 解出m=35 consider row-major:A(6,4) = A(3,3) + [(6-3)*n+(4-3)] 解出n=37/3 (不合) 所以可知此為column-major,且m為35 則A(4,5) = A(3,3) + [(5-3)*35+(4-3)] = 121 + (2*35+1) = 121 + 71 = 192 2. 此題一樣陣列行數、列數及元素大小皆沒給 但因為A(3,2)>A(2,3),所以為row-major 設陣列為m*n,且每個元素大小為d 所以A(2,3) = A(1,1) + [ (2-1)*n + (3-1) ]*d A(3,2) = A(2,3) + [ (3-2)*n + (2-3) ]*d => 18 = 2 + (n+2)*d 28 = 18 + (n-1)*d => d=2,n=6 所以A(4,5)= A(1,1) + ( (4-1)*6 + (5-1) )*2 = 2+(18+4)*2 = 2 + 44 = 46 3. row-major: A(4,2,2)=A(1,1,1) + [ (4-1)*4*2 + (2-1)*2 + (2-1) ]*1 =200 + [(3*4*2) + (1*2) + 1] = 200 + 27 = 227 col-major: A(4,2,2)=A(1,1,1) + [ (2-1)*4*6 + (2-1)*6 + (4-1) ]*1 =200 + [(1*6*4) + (1*6) + 3] = 200 + 33 = 233 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.44.250 ※ 編輯: john35452 來自: 36.224.44.250 (03/08 23:40)