Chương 3 - Mảng 1 chiều nâng cao. Nội dung chính của chương này gồm: Khái niệm mảng, khai báo mảng, các thao tác trên mảng, chèn phần tử vào mảng, xóa phần tử khỏi mảng, một số bài tập ứng dụng. Mời các bạn cùng tham khảo.
AMBIENT/
Chủ đề:
Nội dung Text: Bài giảng Kỹ thuật lập trình nâng cao: Chương 3 - ThS. Phạm Đào Minh Vũ
- CHƢƠNG 2
MẢNG 1 CHIỀU NÂNG CAO
1
- Mảng 1 chiều
Mảng thực chất là một biến đƣợc cấp phát bộ nhớ liên
tục và bao gồm nhiều biến thành phần.
Các thành phần của mảng là tập hợp các biến có cùng
kiểu dƣ̃ liệu và cùng tên. Do đó để truy xuất các biến
thành phần, ta dùng cơ chế chỉ mục theo dạng: tên
mảng [chỉ số]
Giá trị
15 có 6n phần7 tử thì
Mảng 11chỉ số9 tính 3từ 0 đến
8 n-110 25
Chỉ số 0 1 2 3 4 5 6 7 8
2
- Khai báo mảng
Cách 1: Con trỏ hằng
Cú pháp:
[] ;
Ví dụ:
int a[100]; //Khai bao mang so nguyen a gom 100 phan tu
float b[50]; //Khai bao mang so thuc b gom 50 phan tu
Khởi gán giá trị ban đầu cho mảng:
[] = {Giá trị};
Ví dụ: int a[5] = {11};
Giá trị 11 11 11 11 11
3
Chỉ số 0 1 2 3 4
- Khai báo mảng
Cách 2: Con trỏ
Ý nghĩa: Khi ta khai báo một mảng với kiểu dữ liệu bất kì (int,
float, char,…) thì tên của mảng thực chất là một hằng địa chỉ
của phần tử đầu tiên.
Cú pháp:
< Kiểu dữ liệu > *< Tên mảng >;
Ví dụ :
int *p; // khai bao con tro p
int b[100];
p = new int [100];
p = b; // p tro vao phan tu 0 cua mang b
Với cách viết nhƣ trên thì ta có thể hiểu các cách viết sau là
tƣơng đƣơng : p[i] *(p + i) b[i] *(b+i)
Cấp phát bộ nhớ: new
Giải phóng bộ nhớ: delete
4
- Các thao tác
Nhập / xuất
Tìm kiếm
Sắp xếp
Kiểm tra
Đếm
Thêm / xóa
Tính tổng, giá trị trung bình, …
5
- Bài tập ứng dụng
1. Nhập vào ngày tháng năm, kiểm tra xem ngày tháng
năm có hợp lệ không
2. Phát sinh 2 mảng số nguyên tăng dần: a và b, nối
thành mảng c sao cho c cũng tăng dần
3. Thống kê số lƣợng các phần tử có trong mảng số
nguyên có 10.000 phần tử (các phần tử trong mảng
đƣợc phát sinh ngẫu nhiên có giá trị từ 0 đến 30.000)
4. Cho biết phần tử nào xuất hiện nhiều nhất trong
mảng số nguyên có 10.000 phần tử (các phần tử
trong mảng đƣợc phát sinh ngẫu nhiên có giá trị từ 0
đến 30.000)
6
- Chèn phần tử vào mảng
Cho mảng sau:
12 5 7 9 21 38
0 1 2 3 4 5
Hãy trình bày từng bƣớc chèn 111 vào vị trí 3 của
mảng
111
12 5 7 9 21 38
0 1 2 3 4 5
7
- Chèn phần tử vào mảng
Hãy viết hàm chèn phần tử có giá trị x vào vị trí k cho
trƣớc trong mảng a kích thƣớc n theo mẫu sau:
void ChenX(int a[], int &n, int x, int k);
8
- Bài tập áp dụng
Hãy viết hàm chèn phần tử có giá trị x vào sau phần tử
có giá trị nhỏ nhất có trong mảng a, kích thƣớc n (giả sử
mảng không có giá trị trùng nhau)
9
- Xóa phần tử khỏi mảng
Cho mảng sau:
12 5 7 9 21 38
0 1 2 3 4 5
Hãy trình bày từng bƣớc xóa phần tử tại vị trí 3 trong
mảng
12 5 7 9 21 38
0 1 2 3 4 5
10
- Xóa phần tử khỏi mảng
Hãy viết hàm xóa phần tử tại vị trí k cho trƣớc trong
mảng a kích thƣớc n theo mẫu sau:
void XoaTaiVTk(int a[], int &n, int k);
11
- Bài tập áp dụng
Hãy viết hàm xóa phần tử x (nếu có) trong mảng a, kích
thƣớc n (giả sử mảng không có giá trị trùng nhau)
12