陣列的加減乘除計算

1. 概述

帆軟作為報表工具,在擴展展現的時候,經常會用到陣列的知識。我們可以將帆軟報表中每一個可以擴展的儲存格都作為一個陣列來考慮進行計算。而我們選擇將擴展儲存格列表顯示的時候,相當於直接用“,”逗號做分割來展現了陣列的各個元素。

很多的初學者對陣列的運算存在一些錯誤認識,這裏科普一下。

2. 陣列的定義

所謂陣列,是相同資料類型的元素按一定順序排列的集合。

若將有限個類型相同的變數的集合命名,那麼這個名稱為陣列名。

組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。

用於區分陣列的各個元素的數字編號稱為下標。

陣列是在程式設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來的一種形式。這些按序排列的同類資料元件的集合稱為陣列。

3. 陣列的分類

陣列,就是元素的集合,按行、列進行排列。陣列分為一維陣列和多維陣列。

單行或單列的陣列,我們稱為一維陣列。   

多行多列(含 2 行 2 列)的陣列是多維陣列或二維陣列。

4. 陣列的運算

一維陣列和二維陣列的運算規律   

1)單值 x 與陣列 arry 運算    執行 x 與 arry 中每一個元素分別運算並傳回結果,也就是與 arry 本身行列、尺寸一樣的結果。    比如:2*{1,2;3,4;5,6},執行 2*1、2*2、2*3、2*4、2*5、2*6 運算,並傳回 3 行 2 列的二維陣列結果{2,4;6,8;10,12},如下圖所示:

陣列中行和列分別用逗號、分號來間隔。逗號表示行,行之間的關係比較緊密,用逗號分割;列之間,關係相對比較疏遠一點,用分號分割。   

又比如:"A"&{"B","C"}傳回{"AB","AC"}。"A"={"B","A","C"}傳回{FALSE,TRUE,FALSE}

也就是說,陣列是可以與單獨字元或數值進行比較、合併、運算等處理的。

2)同向一維陣列運算    執行 arry1 與arry2 對應位置的元素分別運算並傳回結果。要求 arry1 與 arry2 尺寸必須相同,否則多餘部分傳回 #N/A 錯誤。    

比如: {1;2;3}*{4;5;6} 傳回{4;10;18};  {1,2,3,4}*{4,5,6} 傳回 {4,10,18,#N/A},如下圖所示:

3)異向一維陣列運算    arry1 的每一元素與 arry2 的每一元素分別運算並傳回結果,得到兩個陣列的行數*列數個元素,也就是 M 行陣列與 N 列陣列運算結果為 M*N 的矩陣陣列。    比如:{1;2;3}*{4,5,6,7,8},執行1*4、1*5、1*6、1*7、1*8、2*4、2*5、2*6、2*7、2*8、3*4、3*5、3*6、3*7、3*8,傳回{4,5,6,7,8;8,10,12,14,16;12,15,18,21,24} 

4)一維陣列與二維陣列運算    二維陣列其中一個方向與一維陣列同向同尺寸,比如 M*N 的二維陣列與M行或者N列的陣列運算,在同向的運算類似同向一維陣列之間的位置對應,在異向的運算則類似單值與陣列之間的一一運算。超出尺寸範圍都傳回錯誤值。  

 例:{1,2,3,4}*{1,2,3,4,5;6,7,8,9,10} 即 4 列一維陣列與 2 行 5 列二維陣列運算,列方向上兩個陣列運算按位置一一對應的,不足部分用 #N/A 補齊,行方向上則是一對多的運算。  即:1*1,2*2,3*3,4*4,#N/A *5;1*6,2*7,3*8,4*9,#N/A *10;傳回 {1,4,9,16,#N/A;6,14,24,36,#N/A}。

5)二維陣列之間運算    要求尺寸相同,並執行相同位置元素一一對應的運算,超出尺寸部分傳回錯誤。   

例:{1,2;3,4}*{1,2,3;4,5,6;7,8,9}執行1*1,2*2,3*4,4*5,其餘部分用 #N/A 補齊,傳回={1,4,#N/A;12,20,#N/A;#N/A,#N/A,#N/A}

附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙