问题来源
我在工作中需要将一组一维数据填充到excel表格中,表格中还有其他的信息,要用做报表生成,但是这组数据有些长,如果仅占用一行或者一列,会使得表格信息难以浏览。
然后就有了这样一个需求,将一维数组分解成自定义列数的二维数组。效果图如下:
我们生成的随机数组成了长度为12的一维数组,然后设定了分解的列数大小,最后经过程序的执行,得到了最终的二维数组(最后一行不够的部分填充为0)。
大家也可以花几分钟思考一下,有没有好的思路,或者直接开始动手尝试下。大家肯定会有不同的思路和方案,我也是抛砖引玉啦。
思路方案
最初我的思路是使用labview自带的函数“Decimate 1D Array(抽取一维数组)”:
但是用过才发现这个函数并不好用,长度不被整除时,会导致数据丢失,而且没法在前面板自定义抽取的数组个数。
所以就只能自己想办法去开发这样一个数组分解功能。我做的vi的程序框图见下图:
用删除子数组函数将删除的部分组合成二维数组,保留的部分判断数组大小为空则说明原始的一维数组被分解完毕,for循环停止,输出最终结果。
计算原始数组大小和分裂行数数值的商,加1后作为for循环循环次数的输入,加1是因为可能不被整除。
文末总结
大家有没有想出更好的方案呢?都试一试吧。虽然这是一个很小的功能需求实现代码,但是积少成多,触类旁通,总会有用得到的时候。