Chèn một phần tử x vào vị trí k trong mảng trong C++ – https://final-blade.com

Chèn phần tử vào mảng là một bài toán rất hay. Bài viết này mình sẽ chia sẻ cho bạn đọc code chèn phần tử vào vị trí k trong mảng C/C++.

1.Giới thiệu bài toán

Bài toán số 17 rèn luyện lập trình mình san sẻ cho những bạn dưới đây có đề bài như sau :

Viết hàm chèn một phần tử x vào vị trí k trong mảng 1 chiều a có n phần tử.

Hoặc hoàn toàn có thể bạn sẽ gặp bài toán chèn vào sau hay trước vị trí k trong mảng. Cách giải bài toán đó không khác gì đề bài trên .
Đánh giá : Một bài toán ở mức vận dụng trung bình và cực kỳ hay. Bạn sẽ nhận được rất nhiều thứ khi tự mình hoàn thành xong bài tập này .

2.Giải quyết bài toán

Một câu hỏi ở mức vận dụng cơ bản yên cầu bạn nắm chắc kỹ năng và kiến thức của ngôn từ đặc biệt quan trọng là vòng lặp for .
Câu hỏi này không quá khó về mặt toán học, chỉ cần tư duy một xíu là giải được nhé !

2.1 Hàm chèn phần tử x vào vị trí k cho trước

Nếu như bạn đang làm bài toán chèn x vào trước vị trí k thì nó giống với việc bạn giảm k đi một đơn vị sau đó chèn.

Ngược lại bạn chèn x vào sau vị trí k thì đơn giản, tăng k lên một đơn vị sau đó chèn.

Ý tưởng giải bài toán :

  • Khi thêm một phần tử điều đầu tiên là chúng ta cần phải tăng tổng số phần tử của mảng lên.
  • Dùng vòng for duyệt từ cuối mảng tới vị trí k (>k). Phần tử đứng sau gán bằng phần tử đứng trước tức là a[i]=a[i-1]
  • Gán a[k]=x

Với sáng tạo độc đáo giải của mình bên trên mình có hàm chèn x vào vị trí k như sau :

void InsertX(int a[], int &n, int x, int k){
	n++;
	
	for(int i=n-1;i>k;i--)
		a[i]=a[i-1];	
	
	a[k]=x;
}

hàm này sử dụng được cho cả hai ngôn ngữ C và C++.

Tương tự mình sẽ viết hàm chèn x vào trước k và sau nhé !
Chèn trước :

void InsertX(int a[], int &n, int x, int k){
	n++;
	
	for(int i=n-1;i>k-1;i--)
		a[i]=a[i-1];	
	
	a[k-1]=x;
}

Chèn sau :

void InsertX(int a[], int &n, int x, int k){
	n++;
	
	for(int i=n-1;i>k+1;i--)
		a[i]=a[i-1];	
	
	a[k+1]=x;
}

Bạn dựa vào gợi ý về sáng tạo độc đáo làm bài của mình hoàn toàn có thể dùng vào nhiều trường hợp khác nhau .

2.2 Chương chình chèn phần tử x vào vị trí k

Để hoàn thành chương trình, bạn lắp thêm cấu trúc nhập xuất mảng (làm việc với mảng). Viết thêm phần nhập x và k là có chương trình hoàn thiện

Code C + + :

#include
using namespace std;
void nhap(int a[], int &n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i>a[i];
	}
}

void xuat(int a[], int n){
	for(int i=0;ik;i--)
		a[i]=a[i-1];	
	
	a[k]=x;
}

int main(){
	int a[100];
	int n, x,k;
	nhap(a,n);
	cout<<"\nNhap phan tu can chen: ";
	cin>>x;
	cout<<"Nhap vi tri can chen: ";
	cin>>k;
	InsertX(a,n,x,k);
	cout<<"Mang sau khi chen: "<Kết quả khi chạy chương trình trên :
chen phan tu vao mang 2Trong ví dụ, mình đã chèn số 3 vào vị trí 2. Số 4 đã bị đẩy về phía sau .

Bài viết đến đây là hết, cảm ơn bạn đã quan tâm bài viết. Đừng bỏ lỡ bài viết tiếp theo nhé!

Xem tiếp bài 18: Đếm số phần tử khác nhau trong mảng

Xem lại bài 16: Đếm số lần xuất hiện của phần tử trong mảng.

Tải về đề cương 67 bài tập lập trình C/C++