Chương 7:
Chương 7:
KiỂU DỮ LiỆU MẢNG
KiỂU DỮ LiỆU MẢNG
THĐC - Văn Thị Thiên Trang - Khoa CNTT
2
Nội dung
Định nghĩa và khai báo mảng 1 chiều, mảng nhiều
chiều
Truyền mảng cho hàm
Các bài toán trên mảng 1 chiều
Chuỗi kí tự, giới thiệu các hàm xử lý chuỗi
THĐC - Văn Thị Thiên Trang - Khoa CNTT
3
Định nghĩa mảng
Khi làm việc với các cấu trúc dữ liệu dạng dãy hay
danh sách các phần tử, ta sử dụng kiểu mảng
(array)
−
Mảng 1 chiều: một dãy các phần tử
VD: 2 4 0 1 5 2
−
Mảng nhiều chiều: một bảng các phần tử
VD: 1 0 1 2 3 5
3 1 8 4 5 2
2 7 5 0 1 2
THĐC - Văn Thị Thiên Trang - Khoa CNTT
4
Định nghĩa mảng
Mảng một chiều
−
Dãy các phần tử có cùng kiểu dữ liệu
−
Các phần tử được sắp xếp theo trật tự nhất định
−
Mỗi phần tử được xác định bằng một số thứ tự duy nhất trong mảng (còn gọi là chỉ số)
0 1 2 3 4
Ví dụ mảng
Mảng số nguyên
Mảng số thực
THĐC - Văn Thị Thiên Trang - Khoa CNTT
5
1.2 2.0 -1.25 4.1 3.3
0 1 2 3 4
2 4 8 7 1
0 1 2 3 4
THĐC - Văn Thị Thiên Trang - Khoa CNTT
6
Khai báo mảng
Mảng 1 chiều
Tên mảng: đặt tùy ý, là tên biến mảng
Kích thước: số lượng phần tử tối đa của mảng
Kiểu: là kiểu của mỗi phần tử của mảng
Chỉ số của phần tử đánh từ 0 kích thước mảng -1
<Kiểu dữ liệu> <Tên mảng>[Kích
thước];
THĐC - Văn Thị Thiên Trang - Khoa CNTT
7
Khai báo mảng
VD: int a[10];
Truy xuất đến từng phần tử của mảng
VD:
int a[10];
a[0]=-1; a[1]=4;
printf(“a[%d]=%d”, 1, a[1]);
a[0] A[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
Chỉ số 0 1 2 3 4 5 6 7 8 9
Tên_biến_mảng[chỉ số];
THĐC - Văn Thị Thiên Trang - Khoa CNTT
8
Truyền mảng cho hàm
Cú pháp
VD
void Nhap(int a[], int n){…}
float Tong(float a[], int n){…}
<Kiểu dl trả về> <Tên hàm>(<Kiểu dl> <Tên mảng>[], int <số phần tử>, …)
THĐC - Văn Thị Thiên Trang - Khoa CNTT
9
Một số bài toán trên mảng 1 chiều
Viết chương trình thực hiện:
−
Nhập mảng số nguyên gồm n phần tử (với n nhập từ bàn phím)
−
Xuất mảng vừa nhập
−
Tính tổng các phần tử trong mảng
THĐC - Văn Thị Thiên Trang - Khoa CNTT
10
Nhập mảng 1 chiều
void
void NhapMang(int a[], int &n)
{
//nhập số lượng phần tử của mảng
printf(“Nhap so pt cua mang”);
scanf(“%d”, &n);
//nhập giá trị cho mỗi phần tử của mảng
for(int i=0; i<n; i++)
{
printf(“a[%d]=“, i);
scanf(“%d”, &a[i]);
}
}
THĐC - Văn Thị Thiên Trang - Khoa CNTT
11
Xuất mảng 1 chiều
void
void XuatMang(int a[], int n)
{
for(int i=0; i<n; i++)
printf(“%4d”, a[i]);
}
Ví dụ
Nhập mảng 1 chiều các số thực
Xuất mảng 1 chiều các số thực
THĐC - Văn Thị Thiên Trang - Khoa CNTT
12
THĐC - Văn Thị Thiên Trang - Khoa CNTT
13
Bài tập
1.Nhập mảng gồm n số nguyên, n nhập từ bàn phím
với 0<n<5
2.Hiển thị các phần tử dương nhỏ hơn 5
3.Hiển thị các phần tử nguyên tố có trong mảng
4.Liệt kê các số chính phương trong mảng
5.Tính trung bình cộng các phần tử trong mảng
6.Tìm phần tử lớn nhất/nhỏ nhất
THĐC - Văn Thị Thiên Trang - Khoa CNTT
14
Mảng 2 chiều
Mỗi phần tử của mảng là một mảng khác
VD: Ma trận
Khai báo
2 4 0 5
1 3 8 6
9 2 7 4
<Kiểu> <Tên mảng>[Kích thước chiều 1][Kích thước chiều 2];
Ví dụ
Mảng các số nguyên
Mảng các số thực
THĐC - Văn Thị Thiên Trang - Khoa CNTT
15
2 4 0 5
1 3 8 6
9 2 7 4
2.1 4.4 0 5
1 3.3 8 6
9.9 2 7.2 4
THĐC - Văn Thị Thiên Trang - Khoa CNTT
16
Mảng 2 chiều
VD: int a[5][5];
a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]
a[1]
[0]
a[1][1] a[1][2] a[1][3] a[1][4]
a[2][0] a[2][1] a[2][2] a[2][3] a[2][4]
a[3]
[0]
a[3][1] a[3][2] a[3][3] a[3][4]
a[4][0] a[4][1] a[4][2] a[4][3] a[4][4]
Hàng 0
1
2
3
4
Cột 0 1 2 3 4
THĐC - Văn Thị Thiên Trang - Khoa CNTT
17
Mảng 2 chiều
Truy xuất phần tử của mảng
Truyền mảng 2 chiều cho hàm
Tên_mảng[chỉ số 1][chỉ số 2]
<Kiểu> <Tên mảng>[][số pt chiều 2]
THĐC - Văn Thị Thiên Trang - Khoa CNTT
18
Nhập, xuất mảng 2 chiều
VD: Nhập ma trận gồm m dòng, n cột
void
void NhapMang(int a[][100], int &m, int &n)
{
//nhập số dòng
printf(“Nhap so dong va cot”);
scanf(“%d%d”, &m, &n);
//nhập số cột
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
{
printf(“a[%d][%d]=“,I,j );
scanf(“%d”, &a[i][j]);
}
}
Xuất mảng
THĐC - Văn Thị Thiên Trang - Khoa CNTT
19
THĐC - Văn Thị Thiên Trang - Khoa CNTT
20
Mảng 2 chiều
Viết chương trình thực hiện
−
Nhập ma trận gồm m dòng và n cột (m, n nhập từ bàn phím
−
Xuất ma trận
−
Hiển thị các phần tử trên đường chéo chính
−
Tính tổng các phần tử của ma trận
THĐC - Văn Thị Thiên Trang - Khoa CNTT
21
Chuỗi kí tự
Tham khảo tài liệu
THĐC - Văn Thị Thiên Trang - Khoa CNTT
22