史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   懂java陣列的人來幫忙一下吧,感恩 [圖已經附上] (http://forum.slime.com.tw/thread253335.html)

9319074 2009-10-06 07:08 PM

懂java陣列的人來幫忙一下吧,感恩 [圖已經附上]
 
假設有一陣列A,其A(0,0)與A(2,2)的位址分別在(1024)8與(1244)8,求A(3,3)的位址(以8進位表示)。(PS.1024和1244後面那個8是8進位)

有一二維陣列A(0:m-1,0:n-1),假設A(3,2)在1110,而A(2,3)在1115,若每個元素佔一個空間,請問A(1,4)所在的位址。

(還有兩題,可是都是矩陣圖,因為我家沒掃瞄機貼上圖,所以要等我去圖書館在貼上去)。

到時我會在補充。

==分隔線==

如圖圈起來的部分題目:

http://img4.imageshack.us/img4/9421/89551805.jpg

(ps.我事先有算過,算不出來,才來問大家的。)

cwvdavid 2009-10-06 08:09 PM

請告訴我你的算法(我需要知道你的事先算過的內容是什麼, 你算出了什麼, 才知道怎麼幫你算)

9319074 2009-10-06 10:49 PM

引用:

作者: cwvdavid (文章 2195275)
請告訴我你的算法(我需要知道你的事先算過的內容是什麼, 你算出了什麼, 才知道怎麼幫你算)

我的算法是這樣

課本1

1024(8)= 644(10)

1244(8) = 676(10)

後來不知怎麼開頭算了,無頭緒。

==分隔線==

課本3

A(0:m-1,0:n-1)

u(1)=m , u(2)=n

以A(3,2)算

以列 1110+(1-3)*n*1+(4-2)*1

=> 1110-2n+2

=> 1112-2n

以行 1110+(4-2)*m*1+(1-3)*1

=> 1110+2m-2

=> 1108+2m

以A(3,2)算

以列 1115+(1-2)*n*1+(4-3)*1

=> 1115-n+1

=> 1116-n

以行 1115+(4-3)*m*1+(1-2)*1

=> 1115+m-2

=> 1113+m

我只算這樣,而且不知道開頭方法對不對

==分隔線==

課本4

我不知道怎麼算,而且max最大值和min最小值我不懂0.0,我只貼老師教的類似東西。

(如圖,點圖放大)

http://img84.imageshack.us/img84/272/78291528.jpg

==分隔線==

課本5

如同4說明,但是老師沒教正方形的,只交上三角形和下三角形

cwvdavid 2009-10-07 02:11 AM

第一題...

是1204 以及 1244....
不是1024 跟 1244 (2者差距太大了, 所以你才會算不出來)

===========================
第三題,如果我沒有弄錯的話,

二維陣列為 (0:5, 0:無限大)

請自行用公式去推算...

[0,0]為1095
[5,0]為1100
[0,1]為1101
[5,1]為1106

由左至右,由上往下計算...每一個元素佔1個空間
[0,0],[1,0],[2,0],[3,0],[4,0],[5,0]
[0,1],[1,1],[2,1],[3,1],[4,1],[5,1]
[0,2],[1,2],[2,2],[3,2],[4,2],[5,2]
[0,3],[1,3],[2,3],[3,3],[4,3],[5,3]
[0,4],[1,4],[2,4],[3,4],[4,4],[5,4]
.....
[0,9],[1,9],[2,9],[3,9],[4,9],[5,9]
...
...
[0,100],[1,100],[2,100],[3,100],[4,100],[5,100]

cwvdavid 2009-10-07 02:24 AM

第四題,

Max 以及 Min 說明

Max ( 1, 5) 所得到的值是 5
Max ( 5, 1) 所得到的值是 5

Min (1, 5) 所得到的值是 1
Min (5, 1) 所得到的值是 1

因此,當 A21 要存在 A12時,
我們得把 21 的 2跟1對調,讓比較小的值排前面,比較大的值排後面

==到這裡可能你還看不懂===============


題目的意思是,
要你用Max以及Min來寫出 A(i,j) 的位置....的公式



如果不使用Max, Min
那就是要寫程式...

語法:

IF i < j Then  '如果 i 小於 j
    A(i, j) 存入 A(i, j) 的位置
ElseIF j < i Then  '如果 j 小於 i
    A(i, j) 存入 A(j, i) 的位置
Else '當 i 跟 j 相同...
    A(i, j) 存入 A(i, j) 的位置
End IF

如果使用Max, Min函數,就可以只用1行指令解決
(我就不公佈了,你再想一想吧)

9319074 2009-10-07 08:04 AM

引用:

作者: cwvdavid (文章 2195357)
第一題...

是1204 以及 1244....
不是1024 跟 1244 (2者差距太大了, 所以你才會算不出來)

===========================
第三題,如果我沒有弄錯的話,

二維陣列為 (0:5, 0:無限大)

請自行用公式去推算...

[0,0]為1095
[5,0]為1100
[0,1]為1101
[5,1]為1106

由左至右,由上往下計算...每一個元素佔1個空間
[0,0],[1,0],[2,0],[3,0],[4,0],[5,0]
[0,1],[1,1],[2,1],[3,1],[4,1],[5,1]
[0,2],[1,2],[2,2],[3,2],[4,2],[5,2]
[0,3],[1,3],[2,3],[3,3],[4,3],[5,3]
[0,4],[1,4],[2,4],[3,4],[4,4],[5,4]
.....
[0,9],[1,9],[2,9],[3,9],[4,9],[5,9]
...
...
[0,100],[1,100],[2,100],[3,100],[4,100],[5,100]

引用:

作者: cwvdavid (文章 2195362)
第四題,

Max 以及 Min 說明

Max ( 1, 5) 所得到的值是 5
Max ( 5, 1) 所得到的值是 5

Min (1, 5) 所得到的值是 1
Min (5, 1) 所得到的值是 1

因此,當 A21 要存在 A12時,
我們得把 21 的 2跟1對調,讓比較小的值排前面,比較大的值排後面

==到這裡可能你還看不懂===============


題目的意思是,
要你用Max以及Min來寫出 A(i,j) 的位置....的公式



如果不使用Max, Min
那就是要寫程式...

語法:

IF i < j Then  '如果 i 小於 j
    A(i, j) 存入 A(i, j) 的位置
ElseIF j < i Then  '如果 j 小於 i
    A(i, j) 存入 A(j, i) 的位置
Else '當 i 跟 j 相同...
    A(i, j) 存入 A(i, j) 的位置
End IF

如果使用Max, Min函數,就可以只用1行指令解決
(我就不公佈了,你再想一想吧)

那第一題就用8進位推論和導算囉?

第三題我看不懂你說明的 5 和無限大 和一堆數字怎蹦出來的0.0

第四題的話,我可以用程式解答嘛?? max和mix函數不知道是什麼東西。。。

那第五題?:on_47:

抱歉喔,因為我對這個很不懂。(我是轉學生) 老師上課只交課本例題而已,和用她的方式教法。

假如你要第二章的東西的話,我可以用掃瞄機掃給你。

cwvdavid 2009-10-07 11:29 AM

你現在是大二嗎?

(你原本唸什麼科系?, 轉學...有一併轉科系嗎?)

==========================


用Max以及Min來寫出 A(i,j) 的位置
指的就是
A( Min(i,j) , Max(i,k) )

當i=5, j=3的時候,存放的位置為 A(3,5)
當i=3, j=5的時候,存放的位置為 A(3,5)

以上是答案......

建議你盡量抽空去 請教老師,只要你有找時間去問,老師一定會教你
(上課時間就不用舉手發問了,下課再問!!)

畢竟老師不是神,沒辦法知道你們學習上出現什麼問題,以及遇到什麼瓶頸,
如果你們不去問,那就會永遠卡在那裡,
最後就都變成是老師教的不好.............

9319074 2009-10-07 12:49 PM

引用:

作者: cwvdavid (文章 2195427)
你現在是大二嗎?

(你原本唸什麼科系?, 轉學...有一併轉科系嗎?)

==========================


用Max以及Min來寫出 A(i,j) 的位置
指的就是
A( Min(i,j) , Max(i,k) )

當i=5, j=3的時候,存放的位置為 A(3,5)
當i=3, j=5的時候,存放的位置為 A(3,5)

以上是答案......

建議你盡量抽空去 請教老師,只要你有找時間去問,老師一定會教你
(上課時間就不用舉手發問了,下課再問!!)

畢竟老師不是神,沒辦法知道你們學習上出現什麼問題,以及遇到什麼瓶頸,
如果你們不去問,那就會永遠卡在那裡,
最後就都變成是老師教的不好.............

我是大2生,我本來是在應化系,後來轉學考到資管,我轉資管是因為我對電腦有一些基礎認知,可是太深入就不行了。

我會去問老師一下,我貼我課本東西給你參考一下,就大概知道我們在教什麼了(晚點附上)

cwvdavid 2009-10-07 01:57 PM

我是資管出身的,你不用特地貼了...
那些我都學過了(以前是用 C語言,但資料結構的觀念都是相同的)

=================================
第三題的數字...(你少了大學一年級,更基礎的電腦概念,學起來會很苦)

基礎觀念說明 以Java進行說明:
已知有1個陣列為 A[5],
則...系統中儲存的是 A[0], A[1], A[2], A[3], A[4]

已經有1個二維陣列是A[x][y],x為5, y為5
實際陣列大小就是A[5][5]
因此系統中儲存的會是

A[0,0],A[1,0],A[2,0],A[3,0],A[4,0] (y=0......然後x=0, x=1, x=2, x=3, x=4)
A[0,1],A[1,1],A[2,1],A[3,1],A[4,1] (y=1......然後x=0, x=1, x=2, x=3, x=4)
A[0,2],A[1,2],A[2,2],A[3,2],A[4,2] (y=2......然後x=0, x=1, x=2, x=3, x=4)
A[0,3],A[1,3],A[2,3],A[3,3],A[4,3] (y=3......然後x=0, x=1, x=2, x=3, x=4)
A[0,4],A[1,4],A[2,4],A[3,4],A[4,4] (y=4......然後x=0, x=1, x=2, x=3, x=4)

(以上要先看的懂才能繼續往下講,所以...你先吸收一下吧)

(真的看不太懂的話,打開Excel,把Excel的那些方格 當成是陣列的方格...
會比較能體會)

9319074 2009-10-07 03:09 PM

引用:

作者: cwvdavid (文章 2195453)
我是資管出身的,你不用特地貼了...
那些我都學過了(以前是用 C語言,但資料結構的觀念都是相同的)

=================================
第三題的數字...(你少了大學一年級,更基礎的電腦概念,學起來會很苦)

基礎觀念說明 以Java進行說明:
已知有1個陣列為 A[5],
則...系統中儲存的是 A[0], A[1], A[2], A[3], A[4]

已經有1個二維陣列是A[x][y],x為5, y為5
實際陣列大小就是A[5][5]
因此系統中儲存的會是

A[0,0],A[1,0],A[2,0],A[3,0],A[4,0] (y=0......然後x=0, x=1, x=2, x=3, x=4)
A[0,1],A[1,1],A[2,1],A[3,1],A[4,1] (y=1......然後x=0, x=1, x=2, x=3, x=4)
A[0,2],A[1,2],A[2,2],A[3,2],A[4,2] (y=2......然後x=0, x=1, x=2, x=3, x=4)
A[0,3],A[1,3],A[2,3],A[3,3],A[4,3] (y=3......然後x=0, x=1, x=2, x=3, x=4)
A[0,4],A[1,4],A[2,4],A[3,4],A[4,4] (y=4......然後x=0, x=1, x=2, x=3, x=4)

(以上要先看的懂才能繼續往下講,所以...你先吸收一下吧)

(真的看不太懂的話,打開Excel,把Excel的那些方格 當成是陣列的方格...
會比較能體會)

沒辦法,我是4轉2轉學生,(因為休學先當兵) ,而且我還要修大一的課,而且程式設計我才剛學習而已。高中是有接觸到VB,但是沒很深入。而且我妹也是資管的,但是在不同學校,她教的跟你一樣C語言,之前我有問過他,她說我的結構很難。

==分隔線==

第三題我回去再用EXCEL推看看。(因為人在學校圖書館)

==分隔線==

那第一題是否要用課本公式算?還是要用其他公式去推論??

==分隔線==

我課本的東西(4張圖):

http://yfrog.com/5g78657243jx

沒有病毒,請放心

9319074 2009-10-07 07:38 PM

剛剛用excel 推論,

看的懂了

9319074 2009-10-07 08:39 PM

請問一下你這個是哪一題的??

用Max以及Min來寫出 A(i,j) 的位置
指的就是
A( Min(i,j) , Max(i,k) )

當i=5, j=3的時候,存放的位置為 A(3,5)
當i=3, j=5的時候,存放的位置為 A(3,5)

以上是答案......

cwvdavid 2009-10-07 11:45 PM

Max, Min...那是第四題的答案

你可以用 Excel

在A1 輸入 1
在A2 輸入 6
在C1 輸入 【=Max(A1,A2)】
在C2 輸入 【=Min(A1,A2)】

然後試著去變更 A1 跟 A2 的值...
(就能體會 Max 跟 Min 的用處了)

9319074 2009-10-08 12:46 AM

關於第三題,我是看懂了,然後接下來?

你打的:(以上要先看的懂才能繼續往下講,所以...你先吸收一下吧)

9319074 2009-10-08 06:41 PM

那第一題有公式可以導算嗎??

有的話我大概就會推了

==分隔線==

等等,第一題該不會是這樣推吧??

a(0.0)在1204

a (2.2) 在1244

兩者之間差20

結果a(3.3)就是1264

這樣對不對??

(以上是我想的)

我同學那邊討論答案是1264

第三題我剛剛看出來了,

用排列是下階梯方式,每下一個相差5,所以1115+5=1120,就是A(1,4)的數字

這樣對吧??

cwvdavid 2009-10-09 01:06 AM

第一題
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進位)


================================
我在算題目時,基本上是不用公式的,
但你現在學的還沒有到程式部份,還是理論,所以必須要去了解公式在寫些什麼...
不然後面什麼都不用玩了...

課本的題目都是依順序排列的,
第一題沒有算出來,第二題一定看不懂,第三題也不用看了...
後面就都完了...

(公式看不懂要問老師, 不要什麼都不問, 再不然問妹妹也可以呀)

cwvdavid 2009-10-09 02:01 AM

第三題,
用公式來導...

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 【以列為主】
而要弄的懂,最好是把第二題,也算一算....

也就是說:最好是從第一題開始算,算完之後再算第二題,再算第三題...
當你全部的習題都會算的時候,你這一章才能算是 真的了解了....

而你如果中間的題目就這麼跳過去,不看了,
那你後面的章節只會更痛苦.....

(很多資工科系,資管科系的學生  之所以會裁在程式設計的課程,
就是因為一開始沒弄懂,後面更痛苦,最後放棄....)

cwvdavid 2009-10-09 03:36 AM

引用:

作者: 9319074 (文章 2195590)
關於第三題,我是看懂了,然後接下來?

你打的:(以上要先看的懂才能繼續往下講,所以...你先吸收一下吧)



上面的公式算法講完,
接下來講一般的(當你不知道公式,而又需要了解陣列計算結果時,
用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模擬的)
http://img79.imageshack.us/img79/409/22744518.png

cwvdavid 2009-10-09 04:05 AM

第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]
...
...
以此類型,自己找一下數值之間的共通性吧

9319074 2009-10-09 08:14 AM

第一和第三題我是用推論的方法求出來的,

可以看15樓我說的。

第五題我是知道他是反英文字母L的累加,可是不知怎算而已。

因為老師是用點題目的方式叫我們寫作業0.0

我把我課堂的狀況用E貓告訴老師了,而且老師知道我的學習狀況了。

9319074 2009-10-09 08:17 AM

我1、3題我用我的推論方法寫出來交作業好了,

讓老師知道我學習狀況,你的解答,我還是會參考一下


所有時間均為台北時間。現在的時間是 07:57 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1