Xóa các phần tử có giá trị bằng x - Blog's Cuti



Khởi tạo một mảng gồm n (n ≤ 99) số tự nhiên. Nhập một số tự nhiên x từ bàn phím sau đó xóa tất cả các phần tử có giá trị x trong mảng. Chú ý:thông báo ra màn hình số phần tử bị xóa.
Mảng được khởi tạo là: 4 8 2 7 8 5
Nhập vào giá trị phần tử cần xóa: 8
Mảng sau khi xóa các phần tử có giá trị 8: 4 2 7 5
Có 2 phần tử bị xóa khỏi mảng.

Ý tưởng:
Duyệt từng phần tử từ cuối (n-1) trở về đầu (0). Tại mỗi phần tử a[i], nếu có giá trị bằng x thì xóa phần tử này khỏi mảng (cách xóa như ở câu trên).

Code:
#include <stdio.h>
#include <conio.h>
int main()
{
    int a[99] = { 4, 8, 2, 7, 8, 5 };
    int n = 6, i, j, x, dem;
    printf("Mang duoc khoi tao la: ");
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
    printf("\nNhap gia tri phan tu can xoa: ");
    scanf("%d", &x);
    i = n-1; dem = 0;
    while (i >= 0)                                   //khi chưa hết mảng
    {
        if (a[i] == x)                              //nếu tìm được phần tử =x
        {
            for (j = i; j < n - 1; j++)             //xóa phần tử vị trí i
                a[j] = a[j + 1];
            n--;
            dem++;
        }
        else i--;                                   //nếu a[i]<>x thì cứ cho i chạy tiếp
    }
    printf("Mang sau khi xoa cac phan tu co gia tri %d la: ", x);
    for (i = 0; i < n; i++) printf("%d ", a[i]);
    printf("\nCo %d phan tu bi xoa khoi mang.", dem);
    getch();
}
Nguồn: Agreenet

Đăng nhận xét

Mới hơn Cũ hơn

Bài viết mới nhất

CẦN THIẾT