slide1
Download
Skip this Video
Download Presentation
陣列

Loading in 2 Seconds...

play fullscreen
1 / 27

陣列 - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

7. 陣列. 向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。. 陣列. 7.1  一維陣列 7.2  將陣列當成函數的參數 7.3  二維陣列 7.4  將二維陣列當成函數的參數. 一維陣列. double Temperature [600]; int Record [52]; char Name [15]; 我們常把陣列長度以整數常數 (const int) 的型式另外宣告: const int RecordSize = 600;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '陣列' - quanda


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
7

陣列

向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。

slide2
陣列
  • 7.1 一維陣列
  • 7.2 將陣列當成函數的參數
  • 7.3 二維陣列
  • 7.4 將二維陣列當成函數的參數
slide3
一維陣列

double Temperature [600];

int Record [52];

char Name [15];

  • 我們常把陣列長度以整數常數 (const int) 的型式另外宣告:

const int RecordSize = 600;

double Temp [RecordSize];

  • 注意上述陣列長度必需為const int,不能是int,因為陣列長度在編譯時必需確定。
slide4
一維陣列: 宣告的時候可以同時完成初始化的動作

double Temp[5] = {48.4, 39.8, 40.5, 42.6, 41.2};

int Scope[] = {82, 78, 62, 69};

char Name[] = {'L','u','l','u'};

slide5
一維陣列各元素在記憶體內的配置情況

const int Size = 5;

double Pressure[Size];

P[0] = 3.2;

P[3] = P[0]*2.0;

slide6
陣列元件的下標表示法配合 for 迴圈

const int Size = 5;

double Average, Sum = 0;

for (int i = 0; i < Size; i++)

Sum += P[i];

Average = Sum / double(Size);

slide7
陣列元件的下標表示法配合 for 迴圈計算其最大的元素值

double Max;

Max = P[0];

for (int i = 1; i < Size; i++ )

if (Max < P[i]) Max = P[i];

slide8
將陣列當成函數的參數

cout << Average(P, Size) << endl;

cout << MaxElem(P, Size) << endl;

  • 其中Size為先前宣告過的const int,代表陣列的長度。
  • 函數的原型則寫成:

double Average(double [], int);

double MaxElem(double [], int);

  • 相當於是傳位址 (pass by address,或稱為call by address,「以位址呼叫」的意思),而不是傳值 (pass by value),在函數中對陣列的任何更動都直接作用在原陣列上。
fibonacci
Fibonacci 數列
  • 它所產生的是以下的固定數列:

1 1 2 3 5 8 13 21 .................

slide17
二維陣列
  • 亦稱為矩陣 (matrix) 或是表 (table)。例如
  • 在C++ 中宣告成:

double M[2][3];

  • 如果加上初始化數據,則可以寫做:

double M[2][3] = { {1.8, 4.9, 6.8},{6.2, 2.1, 3.4}};

double M[2][3] = { 1.8, 4.9, 6.8,6.2, 2.1, 3.4};

double M[][3] = { 1.8, 4.9, 6.8, 6.2, 2.1, 3.4};

slide18
二維陣列各元素在記憶體內的配置情況
  • 在電腦內部這些資料是以「列」的次序儲存:
slide19
偏移量
  • 對於一個m×n大小的矩陣M而言,M[i][j] 所在的位址相當於從 M[0][0] 算起,偏移量 (offset) 為

(i × n + j ) 個單位

的地方。

slide20
使用迴圈計算二維陣列平均值

const int Row = 2;

const int Col = 3;

double A[Row][Col];

  • 給定初始值後,可以使用下列迴圈計算其平均值:

double Sum = 0, Average;

for (int i = 0; i < Row; i++)

for (int j = 0; j < Col; j++)

Sum += A[i][j];

Average = Sum / double(Row*Col);

slide21
矩陣元素的兩個下標與迥圈的關係
  • 外圍迴圈是以逐列 (row) 的次序運作,而內圈以逐行 (column) 的次序演算。
slide22
將二維陣列當成函數的參數
  • 例如,函數的原型 (prototype) 是

double MatrixAvg(double [ ][Col]);

或是

double MatrixAvg(double A[ ][Col]);

而函數的呼叫則使用下列敘述:

cout << MatrixAvg(A);

tensor
三維陣列(tensor)
  • 對於一個m×n×p大小的張量T而言,元素T[i][j][k]所在的位址相當於從T[0][0][0]算起,偏移量 (offset) 為

(i × n × p + j × p + k ) 個單位的地方。

ad