Dẫn nhập

Ở bài học kinh nghiệm trước, bản thân đã share cho chúng ta về khái niệm và cách thực hiện MẢNG MỘT CHIỀU vào C++ (Arrays).

Bạn đang xem: Thêm phần tử vào mảng c++

Hôm nay, mình sẽ reviews cho các bạn về Các thao tác làm việc trên mảng một chiều trong C++.

Nội dung

Để phát âm hiểu bài bác này giỏi nhất chúng ta nên có kỹ năng cơ phiên bản về:

Trong bài bác ta vẫn cùng tò mò các vấn đề:

Truyền mảng vào hàm (passing arrays khổng lồ functions)Nhập và xuất mảng 1 chiềuSao chép mảng 1 chiềuTìm kiếm thành phần trong mảngSắp xếp mảng 1 chiềuThêm với xóa một phần tử vào mảng

Truyền mảng vào hàm (passing arrays to lớn functions)

Trong bài TRUYỀN GIÁ TRỊ mang lại HÀM(Passing Arguments by Value), chúng ta đã biết lúc một biến truyền vào hàm theo cách thức truyền giá trị, C++ đang sao chép giá trị của đối số vào tham số của hàm. Do tham số hàm là 1 bản sao, nên việc thay đổi quý giá tham số ko làm biến hóa giá trị đối số ban đầu.

Đối với kiểu dữ liệu mảng, việc xào luộc 1 số lượng lớn các phần tử sẽ tạo tốn không ít vùng nhớ với giảm hiệu suất. Nên lúc truyền mảng vào hàm, tham số của hàm đó là địa chỉ vùng ghi nhớ của bộ phận đầu tiên vào mảng. Vày vậy, mảng có thể đổi khác nội dung sau thời điểm thực hiện tại hàm

Lưu ý khi truyền mảng vào hàm:

Tham số vẻ bên ngoài mảng trong khai báo hàm giống như khai báo đổi thay mảng.

void NhapMang(int a<100>);Tham số phong cách mảng truyền cho hàm đó là địa chỉ của thành phần đầu tiên của mảng.Có thể bỏ con số phần tử hoặc sử dụng con trỏ.Mảng có thể đổi khác nội dung sau khoản thời gian thực hiện nay hàm.void NhapMang(int a<>);void NhapMang(int *a);Số lượng bộ phận thực sự truyền qua thay đổi khác.void NhapMang(int a<100>, int n);void NhapMang(int a<>, int n);void NhapMang(int *a, int n);Tất cả các ví dụ dưới sẽ sử dụng phương thức truyền mảng vào hàm.

Nhập với xuất mảng 1 chiều

Bên bên dưới là lấy một ví dụ về nhập, xuất dữ liệu cho mảng 1 chiều:

#include #include // for srand() và rand()#include // for time()using namespace std;// tư tưởng số phần tử mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);int main()int myArray; // mảng myArray gồm MAX phần tửint nSize; // nSize là số phần tử được sử dụng, bởi vì user nhập// nhập xuất mảng tự độngnhapMang(myArray, nSize);xuatMang(myArray, nSize);return 0;// hàm nhập mảngvoid nhapMang(int arr<>, int &n)// khởi tạo nên số ngẫu nhiênsrand(time(NULL));cout > n;// khởi tạo tình cờ từng thành phần từ chỉ số 0 mang đến n – 1for (int i = 0; i Output:

*

Sao chép mảng 1 chiều

Ý tưởng: Để tạo ra một bản sao xuất phát điểm từ 1 mảng, bạn cần khai báo thêm một mảng khác bao gồm cùng kích cỡ với mảng ban đầu.

Chương trình:

#include #include // for srand() and rand()#include // for time()#include using namespace std;// quan niệm số phần tử mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);void saoChepMangMotChieu(int arrDest<>, int arrSource<>, int n);int main()int myArray; // mảng myArray bao gồm MAX phần tửint nSize; // nSize là số thành phần được sử dụng, bởi vì user nhập// nhập mảng myArray trường đoản cú độngnhapMang(myArray, nSize);// xuất mảng myArraycout > n;// khởi tạo ngẫu nhiên từng phần tử từ chỉ số 0 mang đến n – 1for (int i = 0; i Output:

*

Tìm kiếm phần tử trong mảng

Yêu cầu: Tìm xem thành phần x gồm nằm trong mảng myArray size n hay không? Nếu bao gồm thì nó nằm tại vị trí vị trí đầu tiên nào?

Ý tưởng: Xét từng phần của mảng myArray. Nếu phần tử đang xét bằng x thì trả về địa chỉ đó. Nếu không kiếm được thì trả về -1.

Chương trình:

#include #include // for srand() and rand()#include // for time()#include using namespace std;// tư tưởng số phần tử mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);int timKiemPhanTuDauTien(int arr<>, int n, int x);int main()int myArray; // mảng myArray tất cả MAX phần tửint nSize; // nSize là số bộ phận được sử dụng, vì user nhập// nhập mảng myArray trường đoản cú độngnhapMang(myArray, nSize);// xuất mảng myArraycout > x;// search kiếm thành phần x thứ nhất trong mảngint idx = timKiemPhanTuDauTien(myArray, nSize, x);if (idx != -1)cout > n;// khởi tạo tự dưng từng thành phần từ chỉ số 0 đến n – 1for (int i = 0; i Output 1:

*

Output 2:

*

Sắp xếp mảng 1 chiều

Yêu cầu: mang đến trước mảng myArray kích thước n. Hãy thu xếp mảng a đó thế nào cho các bộ phận có quý hiếm tăng dần.

Ý tưởng: thực hiện 2 biến hóa i cùng j để so sánh tất cả cặp thành phần với nhau với hoán vị các cặp nghịch vắt (sai thiết bị tự).

Chương trình:

#include #include // for srand() và rand()#include // for time()#include using namespace std;// có mang số phần tử mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);void hoanVi(int &a, int &b);void sapXepTang(int arr<>, int n);int main()int myArray; // mảng myArray bao gồm MAX phần tửint nSize; // nSize là số bộ phận được sử dụng, do user nhập// nhập mảng myArray tự độngnhapMang(myArray, nSize);// xuất mảng myArraycout > n;// khởi tạo thốt nhiên từng bộ phận từ chỉ số 0 mang lại n – 1for (int i = 0; i arr)hoanVi(arr, arr);Output:

*

Thêm cùng xóa một trong những phần tử trong mảng

Thêm 1 phần tử vào mảng

Yêu cầu: Thêm phần tử x vào mảng myArray size n tại vị trí idx.

Ý tưởng:

“Đẩy” những phần tử ban đầu tại địa chỉ idx sang đề xuất 1 vị trí.Đưa x vào địa chỉ idx vào mảng.Tăng n lên 1 đơn vị.

Chương trình:

#include #include // for srand() and rand()#include // for time()#include using namespace std;// khái niệm số phần tử mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);void themMotPhanTuVaoMang(int a<>, int &n, int idx, int x);int main()int myArray; // mảng myArray tất cả MAX phần tửint nSize; // nSize là số thành phần được sử dụng, do user nhập// nhập mảng myArray trường đoản cú độngnhapMang(myArray, nSize);// xuất mảng myArraycout > idx;int x;cout > x;themMotPhanTuVaoMang(myArray, nSize, idx, x);// xuất mảng sau khoản thời gian thêmcout > n;// khởi tạo thốt nhiên từng thành phần từ chỉ số 0 đến n – 1for (int i = 0; i = 0 && idx idx; i--)a = a;a = x;n++;Output:

*

Xóa 1 phần tử trong mảng

Yêu cầu: Xóa một phần tử vào mảng a kích cỡ n tại vị trí vt

Ý tưởng:

“Kéo” các thành phần bên đề xuất vị trí idx sang trái 1 vị trí.Giảm n xuống 1 1-1 vị.

Chương trình:

#include #include // for srand() and rand()#include // for time()#include using namespace std;// tư tưởng số thành phần mảng#define MAX 1000// khai báo prototypevoid nhapMang(int arr<>, int &n);void xuatMang(int arr<>, int n);void xoaMotPhanTuTrongMang(int a<>, int &n, int idx);int main(){int myArray; // mảng myArray bao gồm MAX phần tửint nSize; // nSize là số thành phần được sử dụng, do user nhập// nhập mảng myArray tự độngnhapMang(myArray, nSize);// xuất mảng myArraycout > idx;xoaMotPhanTuTrongMang(myArray, nSize, idx);// xuất mảng sau khoản thời gian xóacout > n;// khởi tạo tự dưng từng phần tử từ chỉ số 0 mang lại n – 1for (int i = 0; i = 0 && idx Output:

*

Kết luận

Qua bài học kinh nghiệm này, các bạn đã biết được Các thao tác làm việc trên Mảng một chiều vào C++. Còn rất nhiều thao tác khác trên mảng 1 chiều, vào phạm vi bài học kinh nghiệm không thể nói hết được, các bạn hãy từ bỏ mình khám phá và bình luận bên dưới để share cho mọi người nhé.

Trong bài tiếp theo, mình sẽ giới thiệu cho các bạn về MẢNG hai CHIỀU (Multidimensional arrays) trong C++.

Cảm ơn chúng ta đã theo dõi bài viết. Hãy nhằm lại phản hồi hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – thử thách – không phải lo ngại khó”.

Xem thêm: Trùng Giày Di Chuyển Như Thế Nào ? Trùng Đế Giày

Thảo luận

Nếu các bạn có ngẫu nhiên khó khăn hay vướng mắc gì về khóa học, đừng e dè đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện choigame.me.com để nhận ra sự cung ứng từ cộng đồng.