Bài giảng Kỹ thuật lập trình nâng cao - Chương 3: Mảng một chiều nâng cao

pdf 12 trang phuongnguyen 3121
Bạn đang xem tài liệu "Bài giảng Kỹ thuật lập trình nâng cao - Chương 3: Mảng một chiều nâng cao", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_nang_cao_chuong_3_mang_mot_chie.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình nâng cao - Chương 3: Mảng một chiều nâng cao

  1. CHƢƠNG 2 MẢNG 1 CHIỀU NÂNG CAO 1
  2. 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ị  Mảng15 có 6n phần7 tử thì11 chỉ số9 tính 3từ 0 đế8n n-110 25 Chỉ số 0 1 2 3 4 5 6 7 8 2
  3. 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
  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: * ;  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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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