Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
379,89 KB
Nội dung
CHƯƠNG 11 MẢNG CHƯƠNG 11 MẢNG 11.1 Khái niệm 11.2 Khai báo mảng 11.3 Khởi động trị mảng 11.4 Mảng đối số hàm mảng biến toàn cục 11.5 Các ứng dụng Bài tập cuối chương CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.1 KHÁI NIỆM Mảng biến cấu trúc có nhiều phần tử kiểu, phần tử biến thành phần mảng Mỗi biến thành phần biến bình thường có cước số (subscript) để phân biệt phần tử phần tử Như vậy, để truy xuất phần tử mảng, ta cần biết cước số Trong nhớ, phần tử mảng cấp phát ô nhớ có địa liên tiếp CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.1 KHÁI NIỆM C cho phép lập trình viên khai báo làm việc mảng chiều (singledimensional array) mảng nhiều chiều (multidimensional array) Số phần tử chiều gọi kích thước chiều CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Cú pháp khai báo mảng chiều sau: kiểu tên_mảng [kích_thước]; Với kích_thước số nguyên cụ thể, cho biết số phần tử chiều xét Trong C, cước số phần tử mảng từ trở đi, nên mảng chiều có n phần tử cước số phần tử mảng 0, , n-1 CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Ví dụ: Cho khai báo sau: int a[10], x; Như mảng a có 10 phần tử int, phần tử a[0], a[1], …, a[9] Các phần tử cấp phát vị trí nhớ hình 12.1 sau CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Lệnh a[5] = a[3] + 1; có mã LC-3 sau: ADD R0, R5, #-9 LDR R1, R0, #3 ADD R1, R1, #1 STR R1, R0, #5 CuuDuongThanCong.com ; R0 = &a[0]: địa a[0] ; R1 = a[3] ; tăng ; a[5] = R1, tức a[5] = a[3] + https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Lệnh a[5] = 7; có mã LC-3 sau: AND R0, R0, #0 ADD R0, R0, #7 ; R0 = ADD R1, R5, #-9 ; R1 = &a[0]: địa phần tử a[0] STR R0, R1, #5 ; a[5] = R0 CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Cịn lệnh a[x+1] = a[x] + 2; với x biến chứa trị số cần làm việc, có mã LC-3 sau: LDR R0, R5, #-10 ; R0 = x ADD R1, R5, #-9 ; R1 = &a[0] ADD R1, R0, R1 ; R1 = &a[x] LDR R2, R1, #0 ; R2 = a[x] ADD R2, R2, #2 ; cộng thêm CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều LDR ADD ADD ADD STR R0, R5, #-10 ; R0 = x R0, R0, #1 ; R0 = x+1 R1, R5, #-9 ; R1 = &a[0] R1, R0, R1 ; R1 = &a[x+1] R2, R1, #0 ; a[x+1] = R2 CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.2 KHAI BÁO MẢNG 1- Mảng chiều Ví dụ : Viết chương trình nhập dãy số nguyên, tìm số lớn dãy số ñoù #include #include main() { int i, n, max, vtmax; int a[100]; clrscr(); CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.1 Sắp xếp mảng 2- Quick sort Giá trị tầm tính trung bình cộng hai phần tử sau phần mảng xếp Giải thuật chuyển tất phần tử có giá trị nhỏ giá trị tầm sang phần có số thấp mảng, chuyển tất phần tử có giá trị lớn giá trị tầm sang phần có số cao mảng CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 86 10 23 Trị tầm 12 67 Vị trí mảng 59 47 31 24 Bước 1: 55 86 10 23 12 67 59 47 31 24 Bước 2: 35 24 10 23 12 31 47 59 67 86 Bước 3: 27 24 10 23 12 31 47 59 67 86 Bước 4: 18 24 10 23 12 31 47 59 67 86 Bước 5: 11 12 10 23 24 31 47 59 67 86 Bước 6: 10 12 23 24 31 47 59 67 86 Bước 7: 23 10 12 23 24 31 47 59 67 86 Bước 8: 72 10 12 23 24 31 47 59 67 86 Bước 9: 63 10 12 23 24 31 47 59 67 86 10 12 23 24 31 47 59 67 86 Bước 10: 63 CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.1 Sắp xếp mảng 3- Select sort Giải thuật tìm giá trị lớn đưa vị trí có cước số thấp nhất, sau tìm giá trị lớn thứ nhì đưa vị trí có cước số thấp nhì, trình diễn tương tự hết Ví dụ 8.14 (SGT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Stack (tạm dịch ngăn xếp) kiểu cấu trúc liệu lập trình viên tự lập ra, cần, lập trình viên thêm phần tử vào stack, xóa phần tử khỏi stack Đặc điểm cấu trúc liệu liệu ghi vào lấy khỏi stack theo trật tự vào trước sau (last-in first-out) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Các thao tác cần có để làm việc stack: - Khởi động stack, tương ứng với hàm init_stack() cần thiết kế - Các hàm để xem stack rỗng, đầy, hay xem trị đỉnh stack - Đẩy phần tử vào stack, tương ứng hàm push() cần thiết kế - Lấy phần tử từ đỉnh stack ra, tương ứng với hàm pop() cần thiết kế CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Ví dụ: CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.2 Stack Chương trình ứng dụng stack (SGT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Queue cấu trúc liệu, việc thêm liệu vào thực đầu, việc lấy phần tử khỏi queue thực đầu Dữ liệu vào queue theo trật tự vào (first-in first-out) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Cũng tương tự stack, thao tác cần có để làm việc queue: - Khởi động queue, tương ứng với hàm init_queue() cần thiết kế - Các hàm để xem queue rỗng, đầy - Thêm phần tử vào queue, tương ứng hàm addqueue() cần thiết kế - Lấy phần tử khỏi queue, tương ứng với hàm deletequeue() cần thiết kế CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Ví dụ: CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11.5 CÁC ỨNG DỤNG 11.5.3 Queue Ví du (SGT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập ma trận n x n bất kỳ, xếp lại ma trận cho trị lớn hàng, nằm đường chéo ma trận Viết chương trình tạo in hình ma trận có dạng sau: a b c d b c d a c d a b n : tham soá nhập d a b c n CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập chuỗi từ bàn phím, xóa tất ký tự khoảng trắng thừa chuỗi in hình chuỗi Nhập dãy số từ bàn phím Viết hai hàm để in hình biểu đồ ngang biểu đồ dọc dấu * tương ứng với số nhập dãy số Ví dụ: Nhaäp 3; *** ** *** **** ** *** * CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Viết chương trình tạo in hình tam giác PASCAL cấp n, với n nhập từ bàn phím Viết chương trình tạo ma trận nghịch đảo n x n Viết chương trình giải hệ phương trình tuyến tính phương pháp Gauss CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG BÀI TẬP CUỐI CHƯƠNG Nhập ma trận vuông bất kỳ, tính tổng hàng, cột, đường chéo Nhập ma trận In hình trị vị trí số nguyên tố có mảng 10 Viết hàm đổi từ số sang chuỗi, từ chuỗi sang soá CuuDuongThanCong.com https://fb.com/tailieudientucntt ... first-out) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11. 5 C? ?C ỨNG DỤNG 11. 5.2 Stack C? ?c thao t? ?c cần c? ? để làm vi? ?c stack: - Khởi động stack, tương ứng với hàm init_stack() c? ??n... https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11. 4 MẢNG LÀ ĐỐI SỐ C? ??A HÀM MẢNG LÀ BIẾN TOÀN C? ? ?C CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11. 4 MẢNG LÀ ĐỐI SỐ C? ??A HÀM MẢNG LÀ BIẾN TOÀN C? ? ?C #include... đưa vị trí c? ? c? ?? ?c số thấp nhì, trình diễn tương tự hết Ví dụ 8.14 (SGT) CuuDuongThanCong.com https://fb.com/tailieudientucntt CHƯƠNG 11 MẢNG 11. 5 C? ?C ỨNG DỤNG 11. 5.2 Stack Stack (tạm dịch ngăn