作者liptonbin (我還存在耶)
看板C_and_CPP
標題[問題] 請問陣列運算
時間Wed Dec 16 22:26:21 2020
請教一下
我有個
輸入: 一維arr[240]={0,1,2,3,4,5,.....239}
(為了方便記憶,寫有順序排列,之後陣列值會變動!)
想轉成底下5x48陣列,排列如下
0, 1, 2, 3,.........47
48, 49, 50, 51,........95
96, 97, 98, 99,.......143
144,145,146,147,......191
192,193,194,195,..238,239
想做底下陣列運算
直列來看,二個一組相減,有點複雜,請問該怎麼寫c code><
示意圖如下:
https://ibb.co/mzM6Mqt
想要輸出:
48-0, 1-1, 50-2, 3-3,............47-47
48-48, 97-49, 50-50, 99-51,...........143-95
144-96, 97-97, 146-98, 99-99,..........143-143
144-144,193-145,146-146, 195-147,..........239-191
1-192,193-193, 3-194, 195-195,...47-238,239-239
想法是:
要把一維陣列轉成5x48陣列,在做反轉陣列,變成48x5,在轉成一維陣列
目的是2個為一組,再作減法,比較有序,
最後再把一維陣列轉回上面的圖><
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.224.77 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1608128783.A.0D4.html
※ 編輯: liptonbin (1.200.224.77 臺灣), 12/16/2020 22:31:12
1F:→ ctrlbreak: 有進的潛力 XD 12/16 22:32
2F:→ nh60211as: 先從比較小的陣列開始試寫 12/16 22:44
3F:→ wtchen: 自己的想法呢?不補就砍文 12/16 23:03
4F:推 Schottky: 感覺會變成惡搞系列文的開頭 12/16 23:04
5F:→ liptonbin: 因為很難弄出規則 12/16 23:05
6F:→ liptonbin: 想法我也還在想 12/16 23:06
7F:推 Schottky: 但是你的範例很奇怪,是不是寫錯了,敘述也不清楚 12/16 23:09
8F:→ Schottky: 要不然應該只是印金字塔的大一計程作業等級的題目而已 12/16 23:10
※ 編輯: liptonbin (1.200.224.77 臺灣), 12/16/2020 23:49:59
9F:→ liptonbin: 不好意思,示意圖和想法如上補充 12/16 23:50
10F:推 Schottky: 這樣你的輸出是不是完全不對? 12/17 00:38
11F:→ Schottky: 輸出的資料和示意圖的示意完全對不上 12/17 00:39
12F:→ Schottky: 啊我看懂了,這跟陣列完全沒關係 12/17 00:40
13F:→ Schottky: 就只是兩兩分組,然後輸出 (A2-A1), (A2-A2) 放在原位 12/17 00:41
14F:→ Schottky: 你的腦筋打結了,不要去想陣列,直接計算「組員」位置 12/17 00:42
15F:→ Schottky: 會比較順,因為「組員」的輸出位置和輸入一模一樣 12/17 00:43
16F:→ Schottky: 別想太複雜了,這比星號金字塔還簡單,就單迴圈解決 12/17 00:44
17F:→ liptonbin: A2-A1如果一維很好處理,可是這邊是二維排列下(直看)的 12/17 10:49
18F:→ liptonbin: A2-A1就很麻煩 12/17 10:49
19F:推 NciscalA: 座標做一些轉換後一維可以當作二維在跑,想想某格在一 12/17 12:01
20F:→ NciscalA: 維的位置跟它在二維的關係。另外遍歷二維陣列的時候試 12/17 12:01
21F:→ NciscalA: 試把兩個迴圈對調看會發生什麼事情~ 12/17 12:01
22F:→ loveme00835: 所有的問題都可以轉成 range 問題, 只要定義好巡訪方 12/17 13:13
23F:→ loveme00835: 式就好 12/17 13:13
25F:推 yvb: 樓上結果約有一半是錯的,且只有i為0和239時的算式是對的. 12/17 19:42
26F:→ yvb: x=48,y=5;j=(i%x)*y+(i/x),j|=1;k=(j%y)*x+(j/y);a[k]-a[i]; 12/17 19:47
28F:推 gragon: 我有驗證過 沒錯啊 12/17 22:41
30F:推 yvb: 原來如此, 對照原PO想要的輸出, i=1在你的i=5,i=2在i=10,... 12/20 23:06
31F:→ yvb: 也就是還差了半套 -- 矩陣的轉置. 12/20 23:08
32F:推 stock999: 別照著規則做,要對規則有想法再照想法做。 12/26 11:40