[問題] 請問陣列運算

作者: liptonbin (我還存在耶)   2020-12-16 22:26:21
請教一下
我有個
輸入: 一維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個為一組,再作減法,比較有序,
最後再把一維陣列轉回上面的圖><
作者: ctrlbreak   2020-12-16 22:32:00
有進精華區的潛力 XD
作者: nh60211as   2020-12-16 22:44:00
先從比較小的陣列開始試寫
作者: wtchen (沒有存在感的人)   2020-12-16 23:03:00
自己的想法呢?不補就砍文
作者: Schottky (順風相送)   2020-12-16 23:04:00
感覺會變成惡搞系列文的開頭
作者: liptonbin (我還存在耶)   2020-12-16 23:05:00
因為很難弄出規則想法我也還在想
作者: Schottky (順風相送)   2020-12-16 23:09:00
但是你的範例很奇怪,是不是寫錯了,敘述也不清楚要不然應該只是印金字塔的大一計程作業等級的題目而已
作者: liptonbin (我還存在耶)   2020-12-16 23:50:00
不好意思,示意圖和想法如上補充
作者: Schottky (順風相送)   2020-12-17 00:38:00
這樣你的輸出是不是完全不對?輸出的資料和示意圖的示意完全對不上啊我看懂了,這跟陣列完全沒關係就只是兩兩分組,然後輸出 (A2-A1), (A2-A2) 放在原位你的腦筋打結了,不要去想陣列,直接計算「組員」位置會比較順,因為「組員」的輸出位置和輸入一模一樣別想太複雜了,這比星號金字塔還簡單,就單迴圈解決
作者: liptonbin (我還存在耶)   2020-12-17 10:49:00
A2-A1如果一維很好處理,可是這邊是二維排列下(直看)的A2-A1就很麻煩
作者: NciscalA   2020-12-17 12:01:00
座標做一些轉換後一維可以當作二維在跑,想想某格在一維的位置跟它在二維的關係。另外遍歷二維陣列的時候試試把兩個迴圈對調看會發生什麼事情~
作者: loveme00835 (髮箍)   2020-12-17 13:13:00
所有的問題都可以轉成 range 問題, 只要定義好巡訪方式就好
作者: gragon (丞袁)   2020-12-17 15:45:00
作者: yvb   2020-12-17 19:42:00
樓上結果約有一半是錯的,且只有i為0和239時的算式是對的.x=48,y=5;j=(i%x)*y+(i/x),j|=1;k=(j%y)*x+(j/y);a[k]-a[i];
作者: Schottky (順風相送)   2020-12-17 20:34:00
作者: gragon (丞袁)   2020-12-17 22:41:00
我有驗證過 沒錯啊https://ideone.com/1iPjO0
作者: yvb   2020-12-20 23:06:00
原來如此, 對照原PO想要的輸出, i=1在你的i=5,i=2在i=10,...也就是還差了半套 -- 矩陣的轉置.
作者: stock999 (史托克柰褦錼)   2020-12-26 11:40:00
別照著規則做,要對規則有想法再照想法做。

Links booklink

Contact Us: admin [ a t ] ucptt.com