Khai Báo Mảng 2 Chiều Không Tường Minh By OpenStax (Page 3/4)
Có thể bạn quan tâm
Người ta thường sử dụng mảng nhiều chiều để lưu các ma trận, các tọa độ 2 chiều, 3 chiều…
Phần dưới đây là các vấn đề liên quan đến mảng 2 chiều; các mảng 3, 4,… chiều thì tương tự (chỉ cần tổng quát hóa lên).
Khai báo
Khai báo mảng 2 chiều tường minh
Cú pháp:
<Kiểu><Tên mảng><[Số phần tử chiều 1]><[Số phần tử chiều 2]>
Ví dụ: Người ta cần lưu trữ thông tin của một ma trận gồm các số thực. Lúc này ta có thể khai báo một mảng 2 chiều như sau:
float m[8][9]; /* Khai báo mảng 2 chiều có 8*9 phần tử là số thực*/
Trong trường hợp này, ta đã khai báo cho một ma trận có tối đa là 8 dòng, mỗi dòng có tối đa là 9 cột. Hình ảnh của ma trận này được cho trong hình 2:
Dòng\Cột | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 | m[0][0] | m[0][1] | m[0][2] | m[0][3] | m[0][4] | m[0][5] | m[0][6] | m[0][7] | m[0][8] |
1 | m[1][0] | m[1][1] | m[1][2] | m[1][3] | m[1][4] | m[1][5] | m[1][6] | m[1][7] | m[1][8] |
2 | m[2][0] | m[2][1] | m[2][2] | m[2][3] | m[2][4] | m[2][5] | m[2][6] | m[2][7] | m[2][8] |
3 | m[3][0] | m[3][1] | m[3][2] | m[3][3] | m[3][4] | m[3][5] | m[3][6] | m[3][7] | m[3][8] |
4 | m[4][0] | m[4][1] | m[4][2] | m[4][3] | m[4][4] | m[4][5] | m[4][6] | m[4][7] | m[4][8] |
5 | m[5][0] | m[5][1] | m[5][2] | m[5][3] | m[5][4] | m[5][5] | m[5][6] | m[5][7] | m[5][8] |
6 | m[6][0] | m[6][1] | m[6][2] | m[6][3] | m[6][4] | m[6][5] | m[6][6] | m[6][7] | m[6][8] |
7 | m[7][0] | m[7][1] | m[7][2] | m[7][3] | m[7][4] | m[7][5] | m[7][6] | m[7][7] | m[7][8] |
Hình 2: Ma trận được mô tả là 1 mảng 2 chiều
Khai báo mảng 2 chiều không tường minh
Để khai báo mảng 2 chiều không tường minh, ta vẫn phải chỉ ra số phần tử của chiều thứ hai (chiều cuối cùng).
Cú pháp:<Kiểu><Tên mảng><[]><[Số phần tử chiều 2]>
Cách khai báo này cũng được áp dụng trong trường hợp vừa khai báo, vừa gán trị hay đặt mảng 2 chiều là tham số hình thức của hàm.
Truy xuất từng phần tử của mảng 2 chiều
Ta có thể truy xuất một phần tử của mảng hai chiều bằng cách viết ra tên mảng theo sau là hai chỉ số đặt trong hai cặp dấu ngoặc vuông. Chẳng hạn ta viết m[2][3].
Với cách truy xuất theo cách này, Tên mảng[Chỉ số 1][Chỉ số 2]có thể coi là 1 biến có kiểu được chỉ ra trong khai báo biến mảng.
Ví dụ 1: Viết chương trình cho phép nhập 2 ma trận a, b có m dòng n cột, thực hiện phép toán cộng hai ma trận a,b và in ma trận kết quả lên màn hình.
Trong ví dụ này, ta sẽ sử dụng hàm để làm ngắn gọn hơn chương trình của ta. Ta sẽ viết các hàm: nhập 1 ma trận từ bàn phím, hiển thị ma trận lên màn hình, cộng 2 ma trận.
#include<conio.h>
#include<stdio.h>
void Nhap(int a[][10],int M,int N)
{
int i,j;
for(i=0;i<M;i++)
for(j=0; j<N; j++){
printf("Phan tu o dong %d cot %d: ",i,j);
scanf("%d",&a[i][j]);
}
}
void InMaTran(int a[][10], int M, int N)
{
int i,j;
for(i=0;i<M;i++){
for(j=0; j<N; j++)
printf("%d",a[i][j]);
printf("\n");
}
}
/* Cong 2 ma tran A&B ket qua la ma tran C*/
void CongMaTran(int a[][10],int b[][10],int M,int N,int c[][10]){
int i,j;
for(i=0;i<M;i++)
for(j=0; j<N; j++)
c[i][j]=a[i][j]+b[i][j];
}
int main()
{
int a[10][10], b[10][10], M, N;
int c[10][10];/* Ma tran tong*/
printf("So dong M= "); scanf("%d",&M);
printf("So cot M= "); scanf("%d",&N);
printf("Nhap ma tran A\n");
Nhap(a,M,N);
printf("Nhap ma tran B\n");
Nhap(b,M,N);
printf("Ma tran A: \n");
InMaTran(a,M,N);
printf("Ma tran B: \n");
InMaTran(b,M,N);
CongMaTran(a,b,M,N,c);
Từ khóa » Khai Báo Mảng 2 Chiều C
-
Bài 54. Mảng 2 Chiều Trong C - Lập Trình Không Khó
-
Mảng 2 Chiều Trong C
-
Mảng 2 Chiều Trong C - Học Lập Trình C Online - Viettuts
-
C Cơ Bản: Mảng 2 Chiều (Phần 1) - DevIOT
-
5.3 Mảng Hai Chiều - Khóa Học C++
-
Mảng 2 Chiều Trong C | Codelearn
-
Mảng Hai Chiều - Mảng Đa Chiều Trong C++ - CodeLearn
-
Mảng Hai Chiều Là Gì? Cách Khai Báo Và Khởi Tạo Trong C++
-
Cách Khai Báo Mảng 2 Chiều Trong C, C++
-
Mảng 2 Chiều 2d Array Trong C | Lập Trình Từ Đầu
-
Mảng 2 Chiều Trong C++ (Two-dimensional Arrays) | How Kteam
-
Lập Trình C: Mảng Hai Chiều | V1Study
-
Mảng Hai Chiều - Tài Liệu Text - 123doc
-
Mảng Hai Chiều C/C++ | Ma Trận Số Nguyên