Giới thiệu.

Thông thường, khi làm việc với bất kỳ thông tin nào, bạn phải xử lý dữ liệu dạng bảng. Các chương trình hiện đại thường hoạt động với dữ liệu như vậy. Ví dụ đơn giản nhất là lập trình trò chơi trên bàn cờ ca rô: tic-tac-toe, cờ vua, cờ đam, v.v.

Trong toán học, những cấu trúc như vậy được gọi là ma trận.

 
Ma trận là một bảng hình chữ nhật bao gồm các phần tử cùng loại (số, chuỗi, v.v.).< /span>

Dữ liệu như vậy trong C# có thể được lưu trữ và xử lý dưới dạng mảng hai chiều - "mảng của mảng" .
Để xử lý dữ liệu trong bảng, cần nhớ trạng thái của từng ô (cell). Mỗi ô có hai số: số hàng và số cột.
Trong ma trận, mỗi phần tử có hai chỉ số: đầu tiên là số hàng, sau đó là số cột. Việc đánh số hàng và cột bắt đầu từ số 0.
Ví dụ: phần tử A[1, 2] là phần tử nằm ở hàng thứ hai và cột thứ ba.

Cũng giống như mảng thông thường, để làm việc với ma trận, bạn cần học cách tạo chúng, nhập, xử lý và hiển thị.

Tạo ma trận. Có thể tạo một ma ​​trận trong bộ nhớ của một kích thước nhất định chứa đầy một số giá trị ban đầu.

int[,] mảng = int mới[4, 2]; // 4 hàng, 2 cột

 

Sau khi tạo ma trận, bạn có thể điền giá trị tùy ý vào ma trận. Vì mỗi phần tử có hai chỉ mục nên cần sử dụng các vòng lặp lồng nhau

for (int i=1; i <= N, i++) {/ / N - số dòng for (int j=1; j <= N, j++) { // M là số cột A[i, j] = ...   } } Hiển thị ma trận.

Hai vòng lặp lồng nhau thường được sử dụng để xử lý và hiển thị danh sách. Vòng lặp đầu tiên nằm trên số dòng, vòng lặp thứ hai nằm trên các phần tử trong dòng.  Để xuất ma trận lên màn hình theo từng dòng, phân tách các số bằng dấu cách trong một dòng, bạn cần viết đoạn sau:
  for (int i=1; i <= N, i++) { for (int j=1; j <= N, j++) { Console.Write(A[i, j] + " ");   }   Console.WriteLine(); // chuyển sang dòng mới }

Bạn có thể làm tương tự nhưng sử dụng vòng lặp danh sách thay vì chỉ mục ( diễn giải). Cố gắng viết một chương trình con tự thực hiện điều này.

Điền ma trận bằng các giá trị từ bàn phím.

Cho phép chương trình nhận một mảng hai chiều làm đầu vào, ở dạng < em>n chuỗi, mỗi chuỗi chứa m các số được phân tách bằng dấu cách. Làm thế nào để đếm chúng? Ví dụ như thế này:

int[,] array = new int[n,m]; // tạo một mảng để điền vào for (int i = 0; i <  n; i++) {        chuỗi A = Console.ReadLine(); // đọc dòng        int[] curr = A.Split(' ').Select(int.Parse).ToArray(); // chuyển chuỗi này thành mảng một chiều curr        cho (int j = 0; j < m; j++)        {            mảng[i, j] = curr[j]; // điền vào chuỗi của mảng chúng ta cần các giá trị từ mảng curr        } }

 

Mỗi phần tử của ma trận có hai chỉ số, vì vậy bạn cần sử dụng vòng lặp lồng nhau để lặp qua tất cả các yếu tố.
Thông thường một ma trận được lặp theo từng hàng: vòng lặp ngoài lặp qua chỉ số hàng, còn vòng lặp trong lặp qua chỉ số cột.
Nhưng nếu cần, bạn có thể lặp qua ma trận và theo cột, sau đó các chu kỳ sẽ bị đảo ngược.