Mảng 2D
Mảng hai chiều là một mảng có hai chỉ số cho mỗi phần tử ( thường các mảng như vậy được gọi bằng một từ - ma trận).
Thật thuận tiện để lưu trữ và xử lý các dữ liệu dạng bảng khác nhau trong một ma trận. Giống như bất kỳ bảng nào được tạo thành từ các hàng và cột, ma trận được tạo thành từ các hàng và cột.
Để rõ ràng, bạn có thể biểu diễn một mảng như thế này:
Mặc dù, trên thực tế, trong bộ nhớ của máy tính, ma trận sẽ trông như thế này:
Để sử dụng ma trận trong chương trình, nó phải được khai báo giống như một mảng thông thường, chỉ định kiểu dữ liệu và hai kích thước (số hoặc hằng số). Cũng có thể (và mong muốn) đặt ngay các giá trị ban đầu. Ví dụ: đặt lại tất cả các phần tử.
Ví dụ 1: Khai báo mảng 3 hàng 3 cột với các giá trị ban đầu tùy ý
intA[3][3] = {{0,1,2},
{3,4,5},
{6,7,8} };
Ví dụ 2: Khai báo một mảng gồm 5 hàng và 10 cột (kích thước được đặt thông qua một hằng số) không có giá trị ban đầu
const int N = 5, M = 10;
nhân đôi B[N][M] = {};
Để chỉ một phần tử cụ thể của ma trận, chúng tôi sử dụng hai cặp dấu ngoặc, trong dấu ngoặc thứ nhất, chúng tôi chỉ ra số hàng, trong lần thứ hai - số cột.
Ví dụ:
A[0][2] = 100; // đánh số hàng và cột bắt đầu từ 0
Điền ma trận và hiển thị nó
Để duyệt qua toàn bộ ma trận, cần có một vòng lặp lồng nhau. Hãy xem xét việc điền và xuất ma trận bằng cách sử dụng ví dụ về chương trình yêu cầu các giá trị của các phần tử từ bàn phím và chỉ hiển thị ma trận đã điền trên màn hình.
#include <iostream>
sử dụng không gian tên std;
int main() {
/* Khai báo mảng hai chiều */
const int N = 2, M = 3;
int A[N][M];
/* lần lượt điền các phần tử của ma trận từ bàn phím */
int tôi, j;
cho (i = 0; i < N; i++)
cho (j = 0; j < M; j++)
cin>> A[i][j];
//Hiển thị từng phần tử của ma trận ra màn hình theo từng dòng
for (i = 0; i < N; i++) { //vòng lặp ngoài chịu trách nhiệm lặp qua các hàng
for (j = 0; j < M; j++) //vòng lặp hiển thị các phần tử của chuỗi
cout << A[i][j] << " ";
cout << kết thúc; // sau khi hiển thị các phần tử của dòng thứ j ta chuyển sang dòng mới
}
trả về 0;
}
Trong ví dụ trên, cả việc điền và hiển thị ma trận diễn ra theo từng hàng (đầu tiên chúng ta xem xét tất cả các giá trị j - chỉ mục của các cột và chỉ sau đó chỉ mục hàng thay đổi - i)
Bằng cách hoán đổi các vòng lặp (bên trong với bên ngoài), bạn có thể điền và/hoặc xuất một mảng theo cột
Problem
Hoàn thành chương trình điền vào ma trận NxM từ bàn phím và hiển thị nó theo từng dòng (5<=N,M<=100).