Công thức nào sau đây sử dụng mảng trong hàm năm 2024
Mọi ngôn ngữ lập trình đều cung cấp những kiểu dữ liệu có cấu trúc để lưu trữ các dạng dữ liệu như mô tả bên trên. Đối với C++, đó là mảng tĩnh, mảng động và danh sách liên kết. Trong bài viết này, chúng ta sẽ nói về kiểu mảng tĩnh. Show II. Khai báo và khởi tạo mảng một chiều1. Khai báo mảng một chiềuĐể khai báo một mảng trong C++, ta sử dụng cú pháp:
Trong đó, {Kiểu_phần_tử} là một kiểu dữ liệu nguyên thủy hoặc kiểu do người dùng tự định nghĩa - thể hiện kiểu dữ liệu của các phần tử trong mảng; {Tên_mảng} là một định danh do người dùng đặt ra và không được trùng với từ khóa của hệ thống; {Kích_thước_mảng} là một số nguyên thể hiện kích thước tạo ra cho mảng. Giả sử kích thước được khởi tạo là N,N, thì hệ thống sẽ tạo ra một dãy gồm NN ô nhớ liền nhau trong bộ nhớ để biểu thị cho mảng. Ví dụ: Khai báo một mảng số nguyên gồm 1010 phần tử:
Lưu ý: Đừng bao giờ khai báo mảng là biến cục bộ, vì có thể gây ra tràn bộ nhớ call stack (các bạn sẽ hiểu rõ vấn đề này ở các bài tiếp theo). Với các mảng có kích thước nhỏ (dưới 10001000) thì có thể khai báo cục bộ không sao, nhưng với các mảng kích thước lớn, kiểu dữ liệu lớn (như
7 hay
2. Khởi tạo mảng một chiềuCũng giống như biến, mảng có thể được khởi tạo trước các giá trị khi khai báo. Số lượng phần tử khởi tạo không được phép vượt quá kích thước mảng đã khai báo. Nếu như kích thước mảng được để trống thì hệ thống sẽ tự tạo ra số ô nhớ vừa đủ để chứa các phần tử khởi tạo. Cú pháp khởi tạo mảng là:
Có nhiều cách khác nhau để khởi tạo mảng
III. Các thao tác cơ bản trên mảng một chiều1. Truy cập các phần tử trong mảngCác phần tử trong mảng đều được đánh số, bắt đầu từ 00 tới N−1N-1 (NN là kích thước mảng). Để truy cập và sử dụng một phần tử trong mảng, ta sử dụng toán tử
9 với cú pháp:
Mỗi phần tử của mảng khi được truy cập sẽ trở thành giống như một biến đơn, có thể sử dụng để tính toán, kết hợp cùng các câu lệnh và toán tử. Ví dụ:
2. Duyệt các phần tử của mảngĐể duyệt qua tất cả các phần tử trong một mảng, ta có thể sử dụng vòng lặp kết hợp với toán tử
9 để truy cập vào từng phần tử trong mảng. Cú pháp tổng quát như sau:
Chẳng hạn, nếu cần duyệt qua và in ra các phần tử trong một mảng AA gồm 44 phần tử, ta có thể viết:
0 Để duyệt ngược mảng hay duyệt một đoạn phần tử trên mảng, chúng ta chỉ cần biến đổi vòng lặp đi một chút là được. Ngoài ra, vòng lặp
1 cũng có thể được sử dụng để duyệt qua mảng. Bạn đọc hãy thử tự thao tác thêm để thành thạo hơn! 3. Nhập dữ liệu vào mảngTrong trường hợp cần yêu cầu nhập vào giá trị cho một mảng gồm nn phần tử (giả định đề bài cho trước kích thước tối đa của mảng, tức là giới hạn của nn), ta có thể làm như sau:
1 Hoặc nếu muốn cho mảng bắt đầu từ vị trí 11 thì khai báo tăng kích thước tối đa thêm 11 đơn vị:
2 Ví dụ: Dưới đây minh họa một chương trình nhập vào một mảng gồm nn số nguyên sau đó in ra mảng theo thứ tự ngược lại. Bạn đọc có thể xem ví dụ này để hiểu về những điều đã nói ở trên:
3 Giả sử nhập vào n=4n = 4 và mảng a={1,2,3,4},a=\{1, 2, 3, 4\}, kết quả chạy chương trình sẽ đưa ra như sau:
4 4. Thêm giá trị vào mảngĐôi khi chúng ta cần thêm các giá trị mới vào mảng trong quá trình tính toán, thường gặp nhất là thêm giá trị vào cuối mảng. Khi đó, ta sẽ sử dụng một biến đếm nn để lưu số lượng phần tử hiện có trong mảng, sau đó tăng biến nn lên và gán vị trí nn trong mảng bằng phần tử cần thêm vào. Lúc này kích thước của mảng sẽ chính bằng nn mới:
5 Còn nếu như ta muốn thêm giá trị xx vào mảng ở vị trí yy bất kì, thì ta sẽ cần làm ba thao tác sau:
6 Tuy nhiên, thao tác thêm phần tử vào vị trí ngẫu nhiên theo kiểu này sẽ tiêu tốn khá nhiều thời gian thực thi (sẽ học ở bài cuối), vì vậy thao tác này không được khuyến khích đối với mảng. Thay vào đó, ta sẽ có cấu trúc dữ liệu Danh sách liên kết phù hợp hơn cho các thao tác thêm - xóa phần tử. 5. Xóa phần tử trong mảngNgược lại với việc thêm phần tử, để xóa phần tử ở vị trí yy bất kì ta sẽ thực hiện hai thao tác sau:
7 Cũng tương tự với thao tác thêm phần tử, việc xóa phần tử ở vị trí ngẫu nhiên trên mảng sẽ tốn khá nhiều thời gian. Vì thế, Danh sách liên kết sẽ được ưu tiên sử dụng hơn nếu cần phải thêm - xóa phần tử ở vị trí bất kì. |