BÀI 10: CẤU TRÚC MẢNG
Giáo viên: PHAN THIỆN HUỆ
Gmail: thayhuetnh@gmail.com
SĐT, Zalo: 0382.1682.32
Blog: thayhuetnh.blogspot.com
1
Chương III: NGÔN NGỮ LẬP TRÌNH C++
Sắp xếp dãy số Tên chương trình SORTING1.???
Nhập vào số nguyên dương N và dãy gồm N số nguyên a1, a2,…, aN. Sắp xếp dãy số thành dãy tăng dần.
Dữ liệu vào từ file SORTING1.INP
- Dòng 1: số nguyên dương N (1<N<106)
- Dòng 2: dãy N số nguyên a1, a2,…, aN (0<=ai<=109) mỗi số cách nhau một khoảng trắng.
Dữ liệu ra ghi vào file SORTING1.OUT
- Dòng 1: dãy a đã sắp xếp mỗi số cách nhau một khoảng trắng.
🡪 Dùng kiến thức đã học giải quyết bài toán trên?
2
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
SORTING1.INP | SORTING1.OUT |
5 5 4 2 1 2 | 1 2 2 4 5 |
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.1 Khai báo
Cú pháp: khai báo không khởi tạo
<kiểu dữ liệu> <tên biến mảng> [số phần tử mảng];
Ví dụ:
int a[1000];
double x[10000];
string ds[1000];
long long b[100];
3
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.1 Khai báo
Cú pháp: khai báo có khởi tạo
<kiểu dữ liệu> <tên biến mảng> [số phần tử mảng] = {dãy giá trị};
<kiểu dữ liệu> <tên biến mảng> [] = {dãy giá trị};
Ví dụ:
Khai báo mảng v chứa 10 ký tự
char v[10]={'0','1','2','3','4','5','6','7','8','9'};
Khai báo dãy d chứa 5 số thực:
double d[]={0,0,0,0,0}
4
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
Một số lưu ý:
5
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.1 Khai báo
Tham chiếu đến phần tử mảng:
<tên biến mảng>[vị trí phấn tử]
Ví dụ:
A[1]=79; A[3]=68;
Gán tất cả phần tử mảng bằng giá trị nào đó dùng memset
6
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.2 Nhập xuất mảng:
- Nhập mảng
int i;
for (i=0; i<10; i++) cin>>a[i];
- Xuất mảng
for (int i=0 ; i<10 ; i++) cout<<a[i];
- Tùy theo bài ta có thể sử dụng
biểu thức 2 là i++, i--, i+=2, i-=2, i*=2…..
7
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.3 Ví dụ minh họa
Ví dụ: Sắp xếp dãy số Tên chương trình sorting1.???
Nhập vào số nguyên dương N và dãy gồm N số nguyên a1, a2,…, aN. Sắp xếp dãy số thành dãy tăng dần.
Dữ liệu vào từ file SORTING1.INP
- Dòng 1: số nguyên dương N (1<N<106)
- Dòng 2: dãy N số nguyên a1, a2,…, aN (0<=ai<=109) mỗi số cách nhau một khoảng trắng.
Dữ liệu ra ghi vào file SORTING1.OUT
- Dòng 1: dãy a đã sắp xếp mỗi số cách nhau một khoảng trắng.
Giới hạn: - 50% số test ứng với N<=103
- 50% số test ứng với N<106
8
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
SORTING1.INP | SORTING1.OUT |
5 2 0 4 9 8 | 0 2 4 8 9 |
BÀI 10: CẤU TRÚC MẢNG
9
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.3 Ví dụ minh họa
Ví dụ 2: Hệ đếm nhị phân Tên chương trình NHIPHAN.???
Cho một số nguyên dương n. Hãy in ra biễu diễn nhị phân của n.
Dữ liệu nhập:
- Là số nguyên dương n (0 ≤ n <1018)
Dữ liệu xuất:
- Biểu diễn nhị phân của n.
Ví dụ
10
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
NHIPHAN.INP | NHIPHAN.OUT |
29 | 11101 |
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.3 Ví dụ minh họa
Ví dụ 3: Hệ cơ số 16 Tên chương trình THAPLUC.???
Hệ thập lục phân là một hệ đếm có 16 ký tự, từ 0 đến 9 và A đến F (A, B, C, D, E, F tương ứng là 10, 11, 12, 13, 14, 15).
Cho một số nguyên dương n. Hãy in ra biễu diễn thập lục của n.
Dữ liệu nhập:
- Là số nguyên dương n (0 ≤ n <1018)
Dữ liệu xuất:
- Biểu diễn thập lục của n.
11
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
THAPLUC.INP | THAPLUC.OUT |
923 | 39B |
BÀI 10: CẤU TRÚC MẢNG
10.1 Mảng 1 chiều
10.1.3 Ví dụ minh họa
Ví dụ 4: Đếm số Tên chương trình DEMSO1.???
Nhập vào dãy gồm N số nguyên a1,a2,….,aN. Hãy xuất ra số có số lần xuất hiện nhiều nhất và số lần tương ứng.
Lưu ý: Trong trường hợp có nhiều kết quả đúng theo yêu cầu thì in ra kết quả của số có giá trị lớn nhất
Dữ liệu vào: File DEMSO1.INP gồm
- Dòng 1: số nguyên N (10<=N<=105)
- Dòng 2: gồm N số nguyên a1,a2,….,aN (1<=ai<=106) mỗi giá trị cách nhau một khoảng trắng.
Dữ liệu xuất: File DEMSO1.OUT gồm 2 dòng
- Dòng 1: ghi số có số lần xuất hiện nhiều nhất.
- Dòng 2: số lần xuất hiện.
12
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
DEMSO1.INP | DEMSO1.OUT |
12 9 52 11 12 52 13 9 6 11 52 52 6 | 52 4 |
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.1 Khai báo
Cú pháp:
<kiểu dữ liệu> <tên biến mảng> [m][n];
Ví dụ: int A[3][4], B[3][4];
int A[2][3] = { {1,2,3}, {2,1,4} };
Trong đó:
- m, n là số hàng, số cột của mảng.
- có thể được khởi tạo bằng dãy các dòng giá trị, các dòng cách nhau bởi dấu phẩy, mỗi dòng được bao bởi cặp ngoặc {} và toàn bộ giá trị khởi tạo nằm trong cặp dấu {}.
- Tương tự mảng một chiều các chiều trong mảng cũng được đánh số từ 0
- Để truy cập phần tử của mảng ta sử dụng tên mảng kèm theo 2 chỉ số chỉ vị trí hàng và cột của phần tử
13
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.1 Khai báo
Tham chiếu đến phần tử mảng 2 chiều
- Cú pháp
<tên biến mảng>[hàng tham chiếu][cột tham chiếu]
- Ví dụ: int A[2][3] = { {7,8,9}, {11,39,24} };
A[0][1]=8; A[1][0]=11;
14
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
7 | 8 | 9 |
11 | 39 | 24 |
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.2. Nhập xuất mảng 2 chiều
- Nhập mảng
for (int i=0; i<=5; i++)
{
for (int j=0; j<=5; j++)
cin>>a[i][j];
}
- Xuất mảng
for (int i=0; i<=5; i++){
for (int j=0; j<=5; j++){
cout<<a[i][j];
}
cout<<endl;
}
15
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.3 Một số ví dụ
Ví dụ 1: Tên chương trình VD1M2C.???
Nhập N và ma trận NxN sau đó xuất ra ma trận vừa nhập.
Dữ liệu vào: từ file VD1M2C.INP
- Dòng 1: số nguyên dương N (3≤ N ≤103)
- Dòng 2: n dòng tiếp theo mỗi dòng n số nguyên aij (aij <109 )
Dữ liệu ra: ghi vào file VD1M2C.OUT
- Xuất ma trận vừa nhập
16
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
VD1M2C.INP | VD1M2C.OUT |
3 2 5 9 8 7 5 4 6 1 | 2 5 9 8 7 5 4 6 1 |
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.3 Một số ví dụ
Ví dụ 2: Tên chương trình VD2M2C.???
Nhập số nguyên dương N sau đó xuất ra ma trận theo yêu cầu.
Dữ liệu vào: từ file VD2M2C.INP
- Dòng 1: số nguyên dương N (3≤ N ≤103)
Dữ liệu ra: ghi vào file VD2M2C.OUT
- Ma trận theo yêu cầu.
17
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
VD1M2C.INP | VD1M2C.OUT |
5 | 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 |
BÀI 10: CẤU TRÚC MẢNG
10.2 Mảng 2 chiều
10.2.3 Một số ví dụ
Ví dụ 3: Tên chương trình VD3M2C.???
Nhập N và ma trận NxN sau đó tính và xuất ra tổng các phần tử trên đường chéo, các dòng, các cột.
Dữ liệu vào: từ file VD3M2C.INP
- Dòng 1: số nguyên dương N (3≤ N ≤103)
- Dòng 2: n dòng tiếp theo mỗi dòng n số nguyên aij (aij <109 )
Dữ liệu ra: ghi vào file VD3M2C.OUT
- Dòng 1: tổng các phần tử trên đường chéo chính, tổng các số trên đường chéo phụ.
- Dòng 2: tổng các phần tử trên các dòng.
- Dòng 3: tổng các phần tử trên các cột.
18
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
VD3M2C.INP | VD3M2C.OUT |
3 2 5 9 8 7 5 4 6 1 | 10 20 16 20 11 14 18 15 |
BÀI 8: CẤU TRÚC RẼ NHÁNH
10.3. Tóm tắt
- Khai báo mảng 1 chiều
// không khởi tạo
<kiểu dữ liệu> <tên biến mảng> [số phần tử mảng] ;
//có khởi tạo
<kiểu dữ liệu> <tên biến mảng> [số phần tử mảng] = {dãy giá trị};
<kiểu dữ liệu> <tên biến mảng> [] = {dãy giá trị};
- Tham chiếu đến phần tử mảng
<tên biến mảng>[vị trí phấn tử]
- Gán tất cả phần tử mảng bằng giá trị nào đó dùng memset;
19
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
BÀI 8: CẤU TRÚC RẼ NHÁNH
10.3. Tóm tắt
- Khai báo mảng 2 chiều
<kiểu dữ liệu> <tên biến mảng> [m][n];
-> m là số dòng, n là số cột
- Cú pháp truy cập phần tử mảng 2 chiều
<tên biến mảng>[hàng tham chiếu][cột tham chiếu]
20
Trường THPT chuyên Thoại Ngọc Hầu Tin học 10 Chuyên
Tổ Tin học Chương III
21
THE END!