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++.
Tóm Tắt
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 + + :
#includeusing 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;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: "< 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++
Source: https://final-blade.com
Category: Kiến thức Internet