Saturday, April 25, 2020

Code thêm xóa phần tử trong mảng 1 chiều C/C++

Khái niệm mảng 1 chiều:

Mảng một chiều là một dãy hữu hạn các phần tử có cùng kiểu. Mảng được đặt tên và mỗi phần tử mang một chỉ số. Để mô tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh chỉ số các phần tử.

Để viết được chương trình trên bạn có thể sử dụng thuật toán thêm xóa phần tử trong mảng
#include <stdio.h>
#define MAX 1000

void NhapMang(int a[], int n){
    for(int i = 0;i < n; i++){
        printf("Nhap so thu %d: ", i);
        scanf("%d", &a[i]);
    }
}

void XuatMang(int a[], int n){
    for(int i = 0;i < n; i++){
        printf("%4d", a[i]);
    }
}

void ThemPhanTu(int a[], int &n, int val, int pos){
    // Mang da day, khong the them.
    if(n >= MAX){
        return;
    }
    // Neu pos <= 0 => Them vao dau
    if(pos < 0){
        pos = 0;
    }
    // Neu pos >= n => Them vao cuoi
    else if(pos > n){
        pos = n;
    }
    // Dich chuyen mang de tao o trong truoc khi them.
    for(int i = n; i > pos; i--){
        a[i] = a[i-1];
    }
    // Chen val tai pos
    a[pos] = val;
    // Tang so luong phan tu sau khi chen.
    ++n;
}

void XoaPhanTu(int a[], int &n, int pos){
    // Mang rong, khong the xoa.
    if(n <= 0){
        return;
    }
    // Neu pos <= 0 => Xoa dau
    if(pos < 0){
        pos = 0;
    }
    // Neu pos >= n => Xoa cuoi
    else if(pos >= n){
        pos = n-1;
    }
    // Dich chuyen mang
    for(int i = pos; i < n - 1; i++){
        a[i] = a[i+1];
    }
    // Giam so luong phan tu sau khi xoa.
    --n;
}

int main(){
    int a[MAX];
    int n;
    printf("\nNhap so luong phan tu: ");
    scanf("%d", &n);
    NhapMang(a, n);
    XuatMang(a, n);
    printf("\n=======THEM PHAN TU======\n");
    int val, pos;
    printf("\nNhap so can them: ");
    scanf("%d", &val);
    printf("\nNhap vi tri muon chen: ");
    scanf("%d", &pos);
    ThemPhanTu(a, n, val, pos);
    printf("\nMang sau khi them: ");
    XuatMang(a, n);
    printf("\n=======XOA PHAN TU======\n");
    printf("\nNhap vi tri muon xoa: ");
    scanf("%d", &pos);
    XoaPhanTu(a, n, pos);
    printf("\nMang sau khi xoa: ");
    XuatMang(a, n);
    printf("\nDone!");
}
Kết quả của chương trình:
Nhap so luong phan tu: 5
Nhap so thu 0: 1
Nhap so thu 1: 2
Nhap so thu 2: 3
Nhap so thu 3: 4
Nhap so thu 4: 5
   1   2   3   4   5
=======THEM PHAN TU======

Nhap so can them: 6

Nhap vi tri muon chen: 1

Mang sau khi them:    1   6   2   3   4   5
=======XOA PHAN TU======

Nhap vi tri muon xoa: 1

Mang sau khi xoa:    1   2   3   4   5

No comments:

Post a Comment