อาเรย์ห ลายมิต ิ
(M
ulti-Dimensional
Arrays)
C# Programming
มิต ิข องอาเรย์


อาเรย์หนึ่งมิติ

0 1 2 3 4 5 6 7 8 9 10 11



ระบุจ ำา นวนเต็ม
หนึ่ง ค่า สำา หรับ
เป็น ดัช นี

อาเรย์ส...
การประกาศอาเรย์ห ลาย
มิต ิ

สองมิติ

<type>[,] <name>;
<type>[,] <name>;
 ตัวอย่าง
int[,] Array2D;
int[,] Array2D;



ส...
การสร้า งอาเรย์ห ลายมิต ิ


สองมิติ

<name> = new <type>[<dim1>,<dim2>];
<name> = new <type>[<dim1>,<dim2>];



ตัวอย่าง...
ตัว อย่า ง
int[,] Array2D;
int[,] Array2D;
Array2D = new int[3,5];
Array2D = new int[3,5];

int[,] Array3D;
int[,] Array3D...
การกำา หนดค่า เริ่ม ต้น


แบบที่หนึ่ง เช่น
int[,] Array2D;
int[,] Array2D;
Array2D = new int[2,3] {{5,4,3},{2,1,0}};
Arra...
การเข้า ถึง ข้อ มูล ในอาเรย์


จำานวนตัวเลขที่ใช้เป็นดัชนีขึ้นอยู่กับ
จำานวนมิตของอาเรย์
ิ
int[,] A = {
int[,] A = {
{51,...
ขนาดของอาเรย์


ทบทวน





Le ng th property
Ge tLe ng th method

GetLength(1)

5
2

4
1

3
0

GetLength(0)

ตัวอย่าง
...
แบบฝึก หัด


พิจารณาอาเรย์
int[,] A = {
int[,] A = {
{5,34,3,1},
{5,34,3,1},
{27,11,90,9},
{27,11,90,9},
{24,41,67,6},
{2...
แบบฝึก หัด


พิจารณาอาเรย์
int[,] B = {
int[,] B = {
{5,2,3,1,0},
{5,2,3,1,0},
{11,9,10,8,2},
{11,9,10,8,2},
{-1,20,4,33,...
การประยุก ต์ใ ช้อ าเรย์ส อง
มิตาหนดให้ Aก ซ์Bเป็นเมตริกซ์ขนาด
 กำ ิ: เมตริ และ
3x3



1 3 2
A = 9 12 0


5 4 6
...
เมท็อ ดที่ส ำา คัญ สำา หรับ เม
ตริก ซ์



ReadMatrix()
ShowMatrix()
เมท็อ ด ReadMatrix()


รับค่าพารามิเตอร์สองค่าคือ






จำานวนแถว, nr
จำานวนหลัก, nc

ทำาหน้าที่อ่านค่าจำานวนเต็ม nr×...
เมท็อ ด ShowMatrix()




รับค่าพารามิเตอร์เป็นอาเรย์สองมิติซึ่งแทนเม
ตริกซ์
แสดงข้อมูลในเมตริกซ์ออกหน้าจอ
ไม่มีกvoid นค...
โปรแกรมตัว อย่า ง


ตัวอย่างข้างล่างแสดงการเรียกใช้เมท็
อด ReadMatrix และ ShowMatrix


แสดงเฉพาะส่วน Main เท่านั้น

stat...
การคำา นวนเมตริก ซ์


เราสามารถเขียนโปรแกรมเพือคำานวน
่
เมตริกซ์ได้เช่น





การบวกสองเมตริกซ์
การคูณสองเมตริกซ์
การค...
การบวกเมตริก ซ์



เมท็อด AddMatrix ทำาการบวกสองเมตริ
กซ์ และส่งผลลัพธ์เป็นเมตริกซ์ใหม่
โดยสมมติว่าเมตริกซ์ทั้งสองมีขนาด...
การคูณ เมตริก ซ์


A เป็นเมตริกซ์ขนาด m×n และ B เป็นเมตริกซ์
(A× )[i, ]
ขนาด Bn×jp= A[i,1]×B[1,j] + A[i,2]×B[2,j] + ... +...
Upcoming SlideShare
Loading in …5
×

09 multi arrays

894 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
894
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

09 multi arrays

  1. 1. อาเรย์ห ลายมิต ิ (M ulti-Dimensional Arrays) C# Programming
  2. 2. มิต ิข องอาเรย์  อาเรย์หนึ่งมิติ 0 1 2 3 4 5 6 7 8 9 10 11  ระบุจ ำา นวนเต็ม หนึ่ง ค่า สำา หรับ เป็น ดัช นี อาเรย์สองมิติ 0 1 2 3 A[7] ระบุจ ำา นวนเต็ม สองค่า สำา หรับ เป็น ดัช นี A[1,4] 0 1 2 3 4 5 6 7 8
  3. 3. การประกาศอาเรย์ห ลาย มิต ิ  สองมิติ <type>[,] <name>; <type>[,] <name>;  ตัวอย่าง int[,] Array2D; int[,] Array2D;  สามมิติ <type>[,,] <name>; <type>[,,] <name>;  ตัวอย่าง int[,,] Array3D; int[,,] Array3D;
  4. 4. การสร้า งอาเรย์ห ลายมิต ิ  สองมิติ <name> = new <type>[<dim1>,<dim2>]; <name> = new <type>[<dim1>,<dim2>];  ตัวอย่าง int[,] Array2D; int[,] Array2D; Array2D = new int[3,5]; Array2D = new int[3,5];  สามมิติ <name> = new <type>[<dim1>,<dim2>,<dim3>]; <name> = new <type>[<dim1>,<dim2>,<dim3>];  ตัวอย่าง int[,,] int[,,] Array3D Array3D Array3D; Array3D; = new int[3,5,2]; = new int[3,5,2];
  5. 5. ตัว อย่า ง int[,] Array2D; int[,] Array2D; Array2D = new int[3,5]; Array2D = new int[3,5]; int[,] Array3D; int[,] Array3D; Array3D = new int[4,3,5]; Array3D = new int[4,3,5];
  6. 6. การกำา หนดค่า เริ่ม ต้น  แบบที่หนึ่ง เช่น int[,] Array2D; int[,] Array2D; Array2D = new int[2,3] {{5,4,3},{2,1,0}}; Array2D = new int[2,3] {{5,4,3},{2,1,0}};  แบบที่สอง เช่น int[,] Array2D; int[,] Array2D; Array2D = new int[,] { Array2D = new int[,] { {5,4,3}, {5,4,3}, {2,1,0} {2,1,0} }; };  แบบที่สามอย่างย่อ เช่น int[,] Array2D; int[,] Array2D; Array2D = { Array2D = { {5,4,3}, {5,4,3}, {2,1,0} {2,1,0} }; }; 5 2 4 1 3 0
  7. 7. การเข้า ถึง ข้อ มูล ในอาเรย์  จำานวนตัวเลขที่ใช้เป็นดัชนีขึ้นอยู่กับ จำานวนมิตของอาเรย์ ิ int[,] A = { int[,] A = { {51,24,3}, {51,24,3}, {72,11,90}, {72,11,90}, {42,41,67}, {42,41,67}, {37,1,0} {37,1,0} }; }; 0 1 2 3 A[2,0] 51 24 3 72 11 90 42 41 67 37 1 0 0 1 2 A[1,1] A[3,2]
  8. 8. ขนาดของอาเรย์  ทบทวน    Le ng th property Ge tLe ng th method GetLength(1) 5 2 4 1 3 0 GetLength(0) ตัวอย่าง int[,] Array2D = { int[,] Array2D = { {5,4,3}, {5,4,3}, {2,1,0} {2,1,0} }; }; Console.WriteLine(Array2D.GetLength(0)); Console.WriteLine(Array2D.GetLength(0)); Console.WriteLine(Array2D.GetLength(1)); Console.WriteLine(Array2D.GetLength(1)); Console.WriteLine(Array2D.Length); Console.WriteLine(Array2D.Length); Length
  9. 9. แบบฝึก หัด  พิจารณาอาเรย์ int[,] A = { int[,] A = { {5,34,3,1}, {5,34,3,1}, {27,11,90,9}, {27,11,90,9}, {24,41,67,6}, {24,41,67,6}, {73,1,0,4}, {73,1,0,4}, {1,2,3,4} {1,2,3,4} }; };  จงหาค่าของนิพจน์ ต่อไปนี A[2,2]้ A[3,0] A[1,3] A.Length A.GetLength(0) A.GetLength(1)
  10. 10. แบบฝึก หัด  พิจารณาอาเรย์ int[,] B = { int[,] B = { {5,2,3,1,0}, {5,2,3,1,0}, {11,9,10,8,2}, {11,9,10,8,2}, {-1,20,4,33,12}, {-1,20,4,33,12}, {10,11,8,9,7} {10,11,8,9,7} }; };  จงหาค่าของนิพจน์ ต่อไปนี B[2,2]้ B[3,0] B[1,3] B.Length B.GetLength(0) B.GetLength(1)
  11. 11. การประยุก ต์ใ ช้อ าเรย์ส อง มิตาหนดให้ Aก ซ์Bเป็นเมตริกซ์ขนาด  กำ ิ: เมตริ และ 3x3  1 3 2 A = 9 12 0   5 4 6    4 1 3 B = 5 2 6   6 3 9    using System; using System; class Matrix {{ class Matrix public static void Main() {{ public static void Main() int [,] AA == 1 int [,] คำานวน A B + int [,] BB == int [,] 2 int i,j; int i,j; }} }} for (i == 0; ii << 3; i++) {{ for (i 0; 3; i++) for (j == 0; jj << 3; j++) {{ for (j 0; 3; j++) Console.Write("{0,4}", A[i,j]+B[i,j]); Console.Write("{0,4}", A[i,j]+B[i,j]); }} Console.WriteLine(); Console.WriteLine(); }}
  12. 12. เมท็อ ดที่ส ำา คัญ สำา หรับ เม ตริก ซ์   ReadMatrix() ShowMatrix()
  13. 13. เมท็อ ด ReadMatrix()  รับค่าพารามิเตอร์สองค่าคือ     จำานวนแถว, nr จำานวนหลัก, nc ทำาหน้าที่อ่านค่าจำานวนเต็ม nr×nc ค่าจากผูใช้ ้ คืนค่าเป็นอาเรย์สองมิติซึ่งแทนเมตริกซ์ static int[,] ReadMatrix(int nr, int nc) { static int[,] ReadMatrix(int nr, int nc) { int[,] m = new int[nr,nc]; int[,] m = new int[nr,nc]; for (int i = 0; i < nr; i++) { for (int i = 0; i < nr; i++) { for (int j = 0; j < nc; j++) { for (int j = 0; j < nc; j++) { Console.Write("Element [{0},{1}]: ", i+1, j+1); Console.Write("Element [{0},{1}]: ", i+1, j+1); m[i,j] = int.Parse(Console.ReadLine()); m[i,j] = int.Parse(Console.ReadLine()); } } } } return m; return m; } }
  14. 14. เมท็อ ด ShowMatrix()    รับค่าพารามิเตอร์เป็นอาเรย์สองมิติซึ่งแทนเม ตริกซ์ แสดงข้อมูลในเมตริกซ์ออกหน้าจอ ไม่มีกvoid นค่าใดใด ารคื ShowMatrix(int[,] m) { static static void ShowMatrix(int[,] m) { for (int i = 0; i < m.GetLength(0); i++) { for (int i = 0; i < m.GetLength(0); i++) { for (int j = 0; j < m.GetLength(1); j++) { for (int j = 0; j < m.GetLength(1); j++) { Console.Write("{0,3}", m[i,j]); Console.Write("{0,3}", m[i,j]); } } Console.WriteLine(); Console.WriteLine(); } } } }
  15. 15. โปรแกรมตัว อย่า ง  ตัวอย่างข้างล่างแสดงการเรียกใช้เมท็ อด ReadMatrix และ ShowMatrix  แสดงเฉพาะส่วน Main เท่านั้น static void Main() { static void Main() { int[,] A; int[,] A; Console.Write("Enter #rows: "); Console.Write("Enter #rows: "); int nrows = int.Parse(Console.ReadLine()); int nrows = int.Parse(Console.ReadLine()); Console.Write("Enter #columns: "); Console.Write("Enter #columns: "); int ncols = int.Parse(Console.ReadLine()); int ncols = int.Parse(Console.ReadLine()); Console.WriteLine("Enter Matrix A"); Console.WriteLine("Enter Matrix A"); A = ReadMatrix(nrows, ncols); A = ReadMatrix(nrows, ncols); Console.WriteLine("Matrix A is"); Console.WriteLine("Matrix A is"); ShowMatrix(A); ShowMatrix(A); } }
  16. 16. การคำา นวนเมตริก ซ์  เราสามารถเขียนโปรแกรมเพือคำานวน ่ เมตริกซ์ได้เช่น     การบวกสองเมตริกซ์ การคูณสองเมตริกซ์ การคำานวนหาดีเทอร์มิแนนท์ การหาทรานสโพสของเมตริกซ์
  17. 17. การบวกเมตริก ซ์   เมท็อด AddMatrix ทำาการบวกสองเมตริ กซ์ และส่งผลลัพธ์เป็นเมตริกซ์ใหม่ โดยสมมติว่าเมตริกซ์ทั้งสองมีขนาดเท่ากัน static int[,] AddMatrix(int[,] a, int[,] b) { static int[,] AddMatrix(int[,] a, int[,] b) { int nr = a.GetLength(0); int nr = a.GetLength(0); int nc = a.GetLength(1); int nc = a.GetLength(1); int[,] result = new int[nr,nc]; int[,] result = new int[nr,nc]; for (int i = 0; i < nr; i++) { for (int i = 0; i < nr; i++) { for (int j = 0; j < nc; j++) { for (int j = 0; j < nc; j++) { result[i,j] = a[i,j] + b[i,j]; result[i,j] = a[i,j] + b[i,j]; } } } } return result; return result; } }
  18. 18. การคูณ เมตริก ซ์  A เป็นเมตริกซ์ขนาด m×n และ B เป็นเมตริกซ์ (A× )[i, ] ขนาด Bn×jp= A[i,1]×B[1,j] + A[i,2]×B[2,j] + ... + A[i,n]×B[n,j]  เมท็อด MulMatrix ทำาการคูณเมตริกซ์ และ ส่งผลลัพธ์ในเมตริกซ์ใหม่ สมมติว่า #cols ของเมตริกซ์แรกมีค่าเท่ากับ #rows static int[,] MulMatrix(int[,] a, int[,] b) { static int[,] MulMatrix(int[,] a, int[,] b) { ของเมตริ = new อง ี่ int[,] resultกซ์ทสint[a.GetLength(0), b.GetLength(1)]; int[,] result = new int[a.GetLength(0), b.GetLength(1)];  } } for (int i = 0; i < a.GetLength(0); i++) { for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < b.GetLength(1); j++) { for (int j = 0; j < b.GetLength(1); j++) { int sum = 0; int sum = 0; for (int k = 0; k < a.GetLength(1); k++) for (int k = 0; k < a.GetLength(1); k++) sum += a[i,k]*b[k,j]; sum += a[i,k]*b[k,j]; result[i,j] = sum; result[i,j] = sum; } } } } return result; return result;

×