[问题] 请问阵列运算

楼主: 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