1. Bài tập thêm một phần tử vào vị trí bất kì trong mảng một chiều số nguyên bằng ngôn ngữ lập trình C

Bài tập này chúng ta sẽ sử dụng các kiến thức từ ngôn ngữ lập trình C như: cách nhập xuất cơ bản, cách sử dụng mảng một chiều, cách sử dụng hàm trong ngôn ngữ lập trình C.

Yêu cầu của bài tập đưa ra cho chúng ta là thêm một phần tử vào vị trí bất kì trong mảng một chiều số nguyên bằng ngôn ngữ lập trình C.

2. Lời giải

Đầu tiên để thực hiện bài toán này chúng ta cần có kiến thức cơ bản về ngôn ngữ lập trình C, các cách nhập xuất cơ bản trong C, mảng một chiều trong C , cách sử dụng hàm trong ngôn ngữ lập trình C.

Để thêm phần tử vào một vị trí bất kì trong dánh sách ta quan sát biểu đồ sau:

Quan sát quá trình thêm phần tử vào vị trí bất kì trong mảng ta thấy đầu tiên ta cần thực hiện dịch chuyển mảng(phần phía sau nơi chèn + vị trí chèn) đồng thời thêm số phần tử của mảng và chèn giá trị muốn thêm vào vị trí cần chèn.

Các bước thực hiện yêu cầu của bài tập thêm một phần tử vào vị trí bất kì trong mảng một chiều số nguyên bằng ngôn ngữ lập trình C như sau:

Bước 1: Ta khai báo một mảng tĩnh số nguyên có 100 ô nhớ int a[100].

Bước 2: Ta khai báo số nguyên int n là số lượng phần tử có trong mảng với điều kiện n>1 hoặc n<100 nếu không thỏa mãn thì yêu cầu nhập lại n.

Bước 3: Ta khỏi tạo hàm void Nhap(int a[], int n) dùng để nhập dữ liệu từ bàn phím cho mảng. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để nhập dữ liệu cho từng phần tử từ a[0] đến a[n-1], trong vòng for thì nhập vào dữ liệu của a[i].

Bước 4: Ta khởi tạo hàm void Xuat(int a[], int n) dùng để hiển thị dữ liệu từ mảng ra màn hình. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để hiển thị dữ liệu của từng phần tử từ a[0] đến a[n-1] ra màn hình, trong vòng for in a[i] ra màn hình.

Bước 5: Ta viết hàm void ThemPhanTu(int a[], int n) dùng để thêm phần tử vào mẳng; trong hàm ta khai báo biến int x dùng để xác định vị trí cần thêm phần tử, int y dùng để nhập giá trị cần thêm rồi nhập dữ kiệu cho x và y. Tiếp theo ta sử dụng if với điều kiện nếu x<=0 thì ta gán x =0 (thêm vào đầu mảng) ngược lại nếu x>n-1 ta gán giá trị của x = n(thêm vào cuối mảng); Ta sử for bắt đầu từ int i = n và kết thúc khi i>x và mỗi lần i giảm đi một trong vòng for ta gán a[i] = a[i-1] dừng để dịch chuyển mảng đê tạo ô trống trước khi thêm; tiếp theo ta gán giá trị của a[x] = y và tăng số phần tử của mảng lên (n++) rồi gọi hàm Xuat(a,n) dùng để in mảng đã thêm ra màn hình.

Bước 6: Trong hàm main ta gọi hàm Nhap(a,n), Xuat(a,n) và ThemPhanTu(a,n) rồi chạy chương trình.

Chương trình giải bài tập thêm một phần tử vào vị trí bất kì trong mảng một chiều số nguyên bằng ngôn ngữ lập trình C như sau:

#include<stdio.h>
void Nhap(int a[], int n)//ham nhap mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang tu 0 den n-1
    {
        //nhap du lieu vao mang
        printf("Nhap a[%d] = ",i);
        scanf("%d", &a[i]);
    }
}
void Xuat(int a[], int n)//ham xuat mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang 0 den n-1
    {
        //hien thi cac phan tu trong mang
        printf("%d \t", a[i]);
    }
}
void ThemPhanTu(int a[], int n)//ham them phan tu
{
    int x;//khai bao vi tri muon them
    printf("\nNhap vi tri muon them:");
    scanf("%d", &x);
    int y;//khai bao gia tri muon them
    printf("\nNhap phan tu muon them:");
    scanf("%d", &y);
    if(x<=0)//Them vao dau mang
    {
    	x=0;
    }else if(x>=n)//Them vao cuoi mang
    {
        x=n;
    }
    for(int i=n; i>x ; i--)//dich chuyen mang de tao o trong truoc khi them
    {
        a[i] = a[i-1];		
    }
    a[x]=y;// chen gia tri can them y tai x
    n++;// tang so phan tu cua mang
    printf("\nMang sau khi them la:\n");
    Xuat(a,n);//goi ham xuat mang	
}
int main()
{
    int a[100];// khai bao mang so nguyen co 100 o nho
    int n;//khai bao so nguyen n la so phan tu cua mang
    //Nhap du lieu cua n
    do{
        printf("Nhap so phan tu cua mang:");
        scanf("%d", &n);
        if(n<1 || n>100)
        {
            printf("Nhap lai:");
        }
    }while(n<1 || n>100);//dieu kien neu n<1 hoac n>100 yeu cau nhap lai
    
    Nhap(a, n);//goi ham nhap mang
    printf("\nCac phan tu trong mang la:\n");
    Xuat(a,n);// goi ham xuat mang
    ThemPhanTu(a,n);//goi ham them phan tu
}

Ví dụ tôi nhập mảng có 5 phần tử: 1, 2, 3, 4, 5 và vị trí muốn thêm là 2 với giá trị là 0.

Kết quả:

Nhap so phan tu cua mang:5
Nhap a[0] = 1
Nhap a[1] = 2
Nhap a[2] = 3
Nhap a[3] = 4
Nhap a[4] = 5Cac phan tu trong mang la:
1 2 3 4 5
Nhap vi tri muon them:2Nhap phan tu muon them:0Mang sau khi them la:
1 2 0 3 4 5

3. Tổng kết

Sau khi làm bài tập này các bạn cần phải hiểu và nắm được những kiến thức sau:

  • Cách nhập xuất cơ bản trong ngôn ngữ lập trình C.
  • Cách sử dụng hàm trong ngôn ngữ lập trình C.
  • Cách sử dụng mảng một chiều trong ngôn ngữ lập trình C.
  • Các thêm phần tử vào trong mảng một chiều.
  • Cách sử dụng vòng lặp for để duyệt các phần tử trong mảng.