Chèn Một Phần Tử X Vào Vị Trí K Trong Mảng Trong C++
Có thể bạn quan tâm
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++.
Mục lục bài viết
- 1.Giới thiệu bài toán
- 2.Giải quyết bài toán
- 2.1 Hàm chèn phần tử x vào vị trí k cho trước
- 2.2 Chương chình chèn phần tử x vào vị trí k
1.Giới thiệu bài toán
Bài toán số 17 luyện tập lập trình mình chia sẻ cho các 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 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 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 đòi hỏi bạn nắm chắc kiến thức của ngôn ngữ đặc biệt 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 ý tưởng 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ề ý tưởng làm bài của mình 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<bits/stdc++.h> 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<n; i++){ cout<<"a["<<i<<"]: "; cin>>a[i]; } } void xuat(int a[], int n){ for(int i=0;i<n;i++){ cout<<" "<<a[i]; } } 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; } 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: "<<endl; xuat(a,n); return 0; }Kết quả khi chạy chương trình trên:
Trong 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++
Từ khóa » Chèn Phần Tử Vào Mảng đã Sắp Xếp
-
Bài 13: Chèn Một Phần Tử Vào Mảng đã Sắp Xếp - YouTube
-
Bài Tập 4.14: Chèn X Vào Mảng Không Làm Mất Tính Sắp Xếp - YouTube
-
[C] Chèn Thêm Phân Tử Vào Dãy Tăng Dần??? - Cộng đồng C Việt
-
Top 13 Chèn Phần Tử Vào Mảng đã Sắp Xếp C
-
Top 13 Chèn Phần Tử Vào Mảng đã Sắp Xếp
-
Thuật Toán Chèn Phần Tử Vào Một Mảng Bằng Code C++
-
CTDL Và Giải Thuật - Chèn Phần Tử Vào Mảng
-
Thêm Và Chèn Phần Tử Vào Mảng Trong C
-
Thêm Và Chèn Phần Tử Vào Mảng Trong C++
-
Chèn Thêm Một Phần Tử X, Sao Cho Dãy Vẫn Giữ Nguyên Trật Tự Sắp Xếp
-
Chèn Phần Tử Vào Mảng Trong C# (Phần 1) | 200 Bài Tập C# Có Giải ...
-
Bài Tập Java - Chèn Phần Tử Vào Mảng Trong Java - VietTuts