Bài 8 – Mảng một chiều (Dãy)
Khái niệm mảng một chiều
Khai báo mảng
Nhập/xuất mảng
Các bài toán về mảng một chiều
1. Khái niệm mảng một chiều
Mảng một chiều là một công cụ cho phép tổ chức quản lý dữ liệu dưới dạng “dãy”
Ví dụ:
Xét dãy số sau đây:
46 trang |
Chia sẻ: candy98 | Lượt xem: 596 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học đại cương - Phần 2: Lập trình bằng ngôn ngữ C++ (P4) - Phạm Thanh Bình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 8 – Mảng một chiều (Dãy) Khái niệm mảng một chiều Khai báo mảng Nhập/xuất mảng Các bài toán về mảng một chiều Bộ môn Kỹ thuật máy tính – Khoa CNTT1. Khái niệm mảng một chiều Mảng một chiều là một công cụ cho phép tổ chức quản lý dữ liệu dưới dạng “dãy” Ví dụ: Xét dãy số sau đây: A:54719A0A1A2A3A4Bộ môn Kỹ thuật máy tính – Khoa CNTTCác phần tử của mảng Mảng một chiều bao gồm nhiều phần tử, mỗi phần tử được đặc trưng bởi hai yếu tố: Giá trị của phần tử và vị trí của phần tử trong mảng Một phần tử bất kỳ của mảng thường được kí hiệu là A[i], trong đó:+ A là tên mảng+ i là vị trí của phần tử trong mảngBộ môn Kỹ thuật máy tính – Khoa CNTT2. Khai báo mảng Muốn sử dụng mảng một chiều trong chương trình thì phải khai báo nó Khai báo mảng thực chất là sự khai báo đồng thời nhiều biến có cùng kiểu dữ liệu Có nhiều cách khai báo khác nhauBộ môn Kỹ thuật máy tính – Khoa CNTTCác cách khai báo mảng một chiều: Cách 1:KiểuDL TênMảng[Số phần tử tối đa]; Ví dụ 1:int A[100]; Mảng này có tối đa 100 phần tử, mỗi phần tử là một số nguyên Khai báo trên sẽ tạo ra 100 biến nguyên: A[0], A[1], ... , A[99]Bộ môn Kỹ thuật máy tính – Khoa CNTT Ví dụ 2:char B[60]; Mảng này có tối đa 60 phần tử, mỗi phần tử là một kí tự Khai báo trên sẽ tạo ra 60 biến kiểu kí tự: B[0], B[1], ... , B[59]Bộ môn Kỹ thuật máy tính – Khoa CNTT Cách 2:vector TênMảng(Số phần tử tối đa); Ví dụ:vector A(100); Mảng này có tối đa 100 phần tử, mỗi phần tử là một số nguyên Chú ý: Muốn sử dụng cách khai báo này thì phải viết dòng sau đây ở đầu chương trình:#include Bộ môn Kỹ thuật máy tính – Khoa CNTT3. Nhập/xuất mảng Nhập dữ liệu cho mảng từ bàn phím: Thực chất là nhập dữ liệu cho nhiều biến, do đó cần sử dụng vòng lặp. Ví dụ 1: Nhập một dãy số nguyên có 8 phần tử. Cần lặp 8 lần!Bộ môn Kỹ thuật máy tính – Khoa CNTTCác lệnh nhập:int A[8]; for (int i = 0; i > A[i] ; }Bộ môn Kỹ thuật máy tính – Khoa CNTTCác lệnh xuất (hiển thị): Ví dụ 2:Hiện dãy số vừa nhập (8 phần tử) ra màn hình. cout using namespace std;main() { int A[8]; for (int i = 0; i > A[i] ; } cout #include using namespace std;main() { vector A(8); for (int i = 0; i > A[i] ; } cout using namespace std;main() { float A[100]; int N ; cout > N ; for (int i = 0; i > A[i] ; } cout > N ; for (int i = 0; i > A[i] ; S = S + A[i] ; } cout 0 thì cộng A[i] vào tổng Sif (A[i] > 0 ) S = S + A[i];Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập: Nhập một dãy có N số nguyên từ bàn phím rồi tính tổng các phần tử chẵn của dãy. Hiện tổng và hiện dãy ra màn hình.Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 3: Nhập một dãy có N số nguyên từ bàn phím rồi đếm số lượng các phần tử chẵn của dãy. Hiện số lượng đếm được và hiện dãy ra màn hình.Thuật toán:+ Cần khai báo thêm biến chứa số lượng: D+ Ban đầu biến D bằng 0+ Kiểm tra lần lượt từng phần tử của dãy: Nếu Phần tử A[i] chẵn thì tăng D lên 1 if (A[i] % 2 == 0 ) D = D + 1;Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập:1. Nhập một dãy có N kí tự từ bàn phím. Đếm xem trong dãy có bao nhiêu chữ 'K'. Hiện số lượng và hiện dãy ra màn hình.2. Nhập một dãy có N số nguyên từ bàn phím rồi tính trung bình cộng các phần tử chẵn của dãy. Hiện trung bình cộng và hiện dãy ra màn hình.Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập ứng dụng: Nhập điểm tổng kết của N sinh viên trong lớp từ bàn phím. Hãy cho biết lớp có bao nhiêu sinh viên đạt học bổng (điểm tổng kết ≥ 7)Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 4: Nhập một dãy có N số thực từ bàn phím. Hãy tìm phần tử lớn nhất trong dãy.Thuật toán:+ Cần khai báo thêm biến chứa giá trị lớn nhất: Max+ Ban đầu biến Max bằng phần tử đầu tiên của dãy+ Kiểm tra lần lượt từng phần tử của dãy: Nếu Phần tử A[i] > Max thì lấy luôn Max = A[i] if (A[i] > Max ) Max = A[i];Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ:+ Cho một dãy: 4 2 7 5 1+ Ban đầu Max = A[0] = 4...+ Max = A[2] = 7...Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập:1. Nhập một dãy có N số nguyên từ bàn phím. Hãy tìm phần tử nhỏ nhất trong dãy.2. Nhập một dãy có N số thực từ bàn phím. Hãy tìm phần tử lớn nhất và vị trí của nó trong dãy.3. Nhập một dãy có N số nguyên từ bàn phím. Hãy tìm phần tử lớn nhất và tất cả các vị trí của nó trong dãy.Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập ứng dụng: Nhập lượng mưa của N ngày từ bàn phím. Hãy xác định ngày có mưa lớn nhất, lượng mưa đó bằng bao nhiêu?Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 5: Nhập một dãy có N số thực từ bàn phím. Hãy xoá bỏ phần tử đầu tiên của dãy.Ví dụ:+ Dãy ban đầu: 4 2 5 1 7+ Dãy sau khi xoá: 2 5 1 7Bộ môn Kỹ thuật máy tính – Khoa CNTTThuật toán xoá phần tử?Gán A[0] = A[1]A[1] = A[2]A[2] = A[3]A[3] = A[4]...A[N-2] = A[N-1]N = N -1 //Giảm bớt 1 phần tửBộ môn Kỹ thuật máy tính – Khoa CNTTBài tập:1. Nhập một dãy có N số nguyên từ bàn phím. Hãy xoá bỏ phần tử thứ hai của dãy.2. Nhập một dãy có N số thực từ bàn phím. Hãy xoá bỏ phần tử cuối cùng của dãy.3. Nhập một dãy có N số thực từ bàn phím. Hãy xoá bỏ phần tử thứ k của dãy (k nhập từ bàn phím).Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 6: Nhập một dãy có N số thực từ bàn phím. Hãy đổi chỗ phần tử đầu tiên và phần tử cuối cùng của dãy.Ví dụ:+ Dãy ban đầu: 4 2 5 1 7+ Dãy sau đổi chỗ: 7 2 5 1 4Bộ môn Kỹ thuật máy tính – Khoa CNTTThuật toán đổi chỗ?Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập: Nhập một dãy có N số nguyên từ bàn phím. Hãy đổi chỗ phần tử đầu tiên và phần tử ở giữa dãy.Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 7: Nhập một dãy có N số thực từ bàn phím. Hãy sắp xếp dãy theo chiều tăng dần.Ví dụ:+ Dãy ban đầu: 4 2 5 1 7+ Dãy sau sắp xếp: 1 2 4 5 7Bộ môn Kỹ thuật máy tính – Khoa CNTTThuật toán sắp xếp?Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập: Nhập một dãy có N số thực từ bàn phím. Hãy sắp xếp dãy theo chiều giảm dần.Bộ môn Kỹ thuật máy tính – Khoa CNTTỨng dụng của thuật toán sắp xếp Phân loại dữ liệu Tìm kiếm dữ liệu ...Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 8: Nhập một dãy A có N số nguyên từ bàn phím. Hãy tách các phần tử chẵn trong dãy thành một dãy mới (dãy B).Bộ môn Kỹ thuật máy tính – Khoa CNTTThuật toán tách dãy?Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập: Nhập một dãy A có N số thực từ bàn phím. Hãy tách các phần tử dương trong dãy thành một dãy mới (dãy B).Bộ môn Kỹ thuật máy tính – Khoa CNTTVí dụ 9:Xét hàm số y = 2x2 + 3x + 1 trong đoạn [a, b](a, b nhập từ bàn phím).Chia đoạn [a, b] làm N phần bằng nhau (N nhập từ bàn phím).Hãy tính giá trị của hàm tại các đầu mút.Gợi ý:1. Xác định các đầu mút: x[1], x[2],..., x[N+1]2. Tính các y tương ứng: y[1], y[2],..., y[N+1](dùng vòng lặp N+1 lần)Bộ môn Kỹ thuật máy tính – Khoa CNTTBài tập: Xét hàm số trong đoạn [a, b](a, b nhập từ bàn phím).Chia đoạn [a, b] làm N phần bằng nhau (N nhập từ bàn phím).Hãy tính giá trị của hàm tại các đầu mút.Bộ môn Kỹ thuật máy tính – Khoa CNTTỨng dụng: Vẽ biểu đồ, đồ thị Trong Thuỷ lợi: + Tính biến dạng kết cấu + Tính ứng suất + Tính mô men ...Bộ môn Kỹ thuật máy tính – Khoa CNTTEOLBộ môn Kỹ thuật máy tính – Khoa CNTT