Professional Documents
Culture Documents
Bài 34 - Các Thao Tác Trên Mảng Một Chiều
Bài 34 - Các Thao Tác Trên Mảng Một Chiều
COM 1 | 17
Mọi vấn đề về lỗi website làm ảnh hưởng đến bạn hoặc thắc mắc, mong muốn khóa học mới,
nhằm hỗ trợ cải thiện Website. Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé!
Dẫn nhập
Ở bài học trước, mình đã chia sẻ cho các bạn về khái niệm và cách sử dụng
MẢNG MỘT CHIỀU TRONG C++ (Arrays).
Hôm nay, mình sẽ giới thiệu cho các bạn về Các thao tác trên mảng một
chiều trong C++.
Nội dung
Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 2 | 17
Đối với kiểu dữ liệu mảng, việc sao chép 1 số lượng lớn các phần tử sẽ gây
tốn rất nhiều vùng nhớ và giảm hiệu suất. Nên khi truyền mảng vào hàm,
tham số của hàm chính là địa chỉ vùng nhớ của phần tử đầu tiên trong
mảng. Vì vậy, mảng có thể thay đổi nội dung sau khi thực hiện hàm
Tham số kiểu mảng trong khai báo hàm giống như khai báo biến
mảng.
Tham số kiểu mảng truyền cho hàm chính là địa chỉ của phần tử đầu
tiên của mảng.
o Có thể bỏ số lượng phần tử hoặc sử dụng con trỏ.
o Mảng có thể thay đổi nội dung sau khi thực hiện hàm.
Tất cả các ví dụ bên dưới sẽ sử dụng phương pháp truyền mảng vào hàm.
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 3 | 17
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
using namespace std;
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 4 | 17
Output:
Chương trình:
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
#include <string>
using namespace std;
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 5 | 17
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 6 | 17
Output:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 7 | 17
Ý 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ề vị trí đó. Nếu không tìm được thì trả về -1.
Chương trình:
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
#include <string>
using namespace std;
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
int x;
cout << "Nhap phan tu x can tim: ";
cin >> x;
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 8 | 17
return -1;
}
Output 1:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 9 | 17
Output 2:
Ý tưởng: Sử dụng 2 biến i và j để so sánh tất cả cặp phần tử với nhau và hoán
vị các cặp nghịch thế (sai thứ tự).
Chương trình:
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
#include <string>
using namespace std;
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 10 | 17
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 11 | 17
{
cout << "array[" << i << "] = " << arr[i] << endl;
}
}
// sắp xếp mảng tăng dần bằng thuật toán interchange sort
void sapXepTang(int arr[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (arr[i] > arr[j])
hoanVi(arr[i], arr[j]);
}
}
}
Output:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 12 | 17
Ý tưởng:
“Đẩy” các phần tử bắt đầu tại vị trí idx sang phải 1 vị trí.
Đưa x vào vị trí idx trong mảng.
Tăng n lên 1 đơn vị.
Chương trình:
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
#include <string>
using namespace std;
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 13 | 17
int x;
cout << "Nhap gia tri can them: ";
cin >> x;
themMotPhanTuVaoMang(myArray, nSize, idx, x);
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 14 | 17
Output:
Ý tưởng:
“Kéo” các phần tử bên phải vị trí idx sang trái 1 vị trí.
Giảm n xuống 1 đơn vị.
Chương trình:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 15 | 17
#include <iostream>
#include <cstdlib> // for srand() and rand()
#include <ctime> // for time()
#include <string>
using namespace std;
int main()
{
int myArray[MAX]; // mảng myArray có MAX phần tử
int nSize; // nSize là số phần tử được sử dụng, do user nhập
return 0;
}
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 16 | 17
Output:
Copyright © Howkteam.com
KHÓA C++ CƠ BẢN HOWKTEAM.COM 17 | 17
Kết luận
Qua bài học này, bạn đã biết được Các thao tác trên Mảng một chiều trong
C++. Còn rất nhiều thao tác khác trên mảng 1 chiều, trong phạm vi bài học
không thể đề cập hết được, các bạn hãy tự mình tìm hiểu và bình luận bên
dưới để chia sẻ 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 các bạn đã theo dõi bài viết. Hãy để lại bình luận 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
ngại khó”.
Copyright © Howkteam.com