Bài giảng Tin học đại cương - Bài 8: Mảng - Phạm Xuân Cường

TIN HỌC ĐẠI CƯƠNG  
BÀI 8: MẢNG  
Phạm Xuân Cường  
Khoa Công nghệ thông tin  
Mảng một chiều  
• Là một dãy phần tử có cùng kiểu dữ liệu  
• Khai báo mảng:  
kiểu−phần−tử tên−mảng[số−phần−tử];  
• Ví dụ:  
int a[9]; // Mảng a có 9 phần tử kiểu số  
// nguyên, nhưng giá trị của  
// các phần tử chưa xác định.  
0
1
2
3
4
5
6
7
8
Mảng a  
2
Phần tử mảng  
• Truy nhập phần tử mảng bằng chỉ số (bắt đầu từ 0):  
tên−mảng[chỉ−số]  
• Ví dụ:  
int a[9];  
Các phần tử là a[0], a[1], . . . , a[8]  
0
1
2
3
4
5
6
7
8
Mảng a  
• Dùng phần tử mảng giống như một biến thông thường:  
a[0] = 1;  
a[2] = 6;  
cout << a[2] + 10;  
0
1
1
2
6
3
4
5
6
7
8
Mảng a  
3
Khởi tạo mảng  
• Sau khi khai báo mảng, các phần tử có giá trị không xác định  
• Khởi tạo mảng tức là gán giá trị ban đầu cho các phần tử  
• Khai báo kết hợp khởi tạo mảng:  
int a[5] = {4, -1, 7, 12, 8};  
( hoặc: int a[] = {4, -1, 7, 12, 8}; )  
- Phải đảm bảo kích thước mảng (5) không nhỏ hơn số giá trị  
dùng để khởi tạo (4, -1, 7, 12, 8); nếu lớn hơn thì các phần tử  
thừa ra sẽ được gán giá trị 0  
- Trong trường hợp không chỉ rõ kích thước mảng, kích thước  
mảng được xác định thông qua số giá trị khởi tạo  
• Khai báo mảng, sau đó gán giá trị cho từng phần tử:  
double b[2];  
0
1
b[0] = 1.5;  
b[1] = 2.6;  
b
1.5 2.6  
4
Nhập và hiển thị một dãy số nguyên  
#include <iostream>  
#include <string>  
using namespace std;  
int main()  
{
int a[100]; // co 100 phan tu  
int n; // nhung chi lam viec voi n phan tu dau  
cout << "Nhap so phan tu: ";  
cin >> n;  
cout << "Nhap gia tri (nguyen) cho tung phan tu:\n";  
for (int i = 0; i < n; i++) {  
cout << "a[" << i << "] = ";  
cin >> a[i];  
}
cout << "Day so vua nhap la:\n";  
for (int i = 0; i < n; i++) {  
cout << a[i] << " ";  
}
return 0;  
}
5
Bài tập xử lý dãy số (trên lớp)  
1. Tính tổng và trung bình cộng của các phần tử của dãy số thực  
2. Đếm số phần tử dương trong một dãy số thực và tính trung  
bình cộng của chúng  
3. Tìm phần tử lớn nhất và vị trí đầu tiên của nó trong dãy số  
thực  
4. Sắp xếp dãy số thực theo chiều tăng dần  
6
Mảng hai chiều  
• Là một tập phần tử có cùng kiểu dữ liệu, được tổ chức thành  
một ma trận (bảng) gồm các hàng và cột  
a00 a01 a02 . . . a0n  
a10 a11 a12 . . . a1n  
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
am0 am2 am2 . . . amn  
• Khai báo:  
kiểu−phần−tử tên−mảng[số−hàng][số−cột];  
• Ví dụ:  
int a[3][6]; // Ma trận a có 3 hàng và 6 cột,  
// gồm 18 phần tử kiểu số nguyên  
7
Khai báo mảng hai chiều  
• Sau khi khai báo, các phần tử có giá trị không xác định  
int a[3][6]  
0
1
2
3
4
5
0
1
2
a
8
Phần tử mảng hai chiều (1)  
• Truy nhập phần tử mảng hai chiều bằng chỉ số hàng và chỉ số  
cột (đều bắt đầu từ 0):  
tên−mảng[chỉ−số−hàng][chỉ−số−cột]  
phần tử a[1][2]  
0
1
2
3
4
5
0
1
2
a
9
Phần tử mảng hai chiều (2)  
• Dùng phần tử mảng hai chiều giống như một biến thông  
thường  
0
1
8
2
3
4
5
2
a[0][1] = 8;  
a[1][2] = 3;  
0
1
2
a[1][5] = 2;  
a
3
cout << a[1][5] * 3; // sẽ in ra 6  
10  
Nhập và hiển thị ma trận (1)  
#include <iostream>  
using namespace std;  
int main()  
{
int a[100][100]; // Co 100 hang va 100 cot nhung chi  
int m, n; // lam viec voi m hang va n cot dau tien.  
cout << "Nhap so hang: ";  
cin >> m;  
cout << "Nhap so cot: ";  
cin >> n;  
cout << "Nhap vao cac phan tu (nguyen):" << endl;  
for (int i = 0; i < m; i++) // i la chi so hang  
for (int j = 0; j < n; j++) // j la chi so cot  
{
cout << "a[" << i << "][" << j << "] = ";  
cin >> a[i][j];  
11  
}
Nhập và hiển thị ma trận (2)  
// . . . Tiep tuc tu slide truoc  
// Hien thi ma tran  
cout << "Ma tran ma ban vua nhap la:" << endl;  
for (int i = 0; i < m; i++)  
{
for (int j = 0; j < n; j++)  
cout << a[i][j] << " ";  
cout << endl; // in xong mot hang thi xuong dong  
}
return 0;  
} // dau ngoac moc ket thuc ham main  
12  
Bài tập xử lý ma trận (trên lớp)  
1. Đếm số phần tử chẵn của một ma trận và tính trung bình  
cộng của chúng (các phần tử của ma trận có kiểu nguyên)  
2. Tính tổng của các phần tử trên đường chéo chính của ma  
trận vuông  
3. Kiểm tra một ma trận vuông có phải là ma trận đơn vị hay  
không (tức là các phần tử trên đường chéo chính bằng 1,  
trong khi các phần tử còn lại bằng 0)  
13  
Questions?  
13  
pdf 17 trang baolam 19800 Free
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Bài 8: Mảng - Phạm Xuân Cường", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_8_mang_pham_xuan_cuong.pdf