ktltbai23.cpp

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, x;

    // Nhập giá trị x từ bàn phím
    printf("Nhap gia tri x: ");
    scanf("%d", &x);

    // Mở tệp văn bản để đọc dãy số nguyên
    FILE *file = fopen("daysonguyen.txt", "r");
    if (file == NULL) {
        printf("Khong the mo tep.\n");
        return 1;
    }

    // Đếm số phần tử trong tệp văn bản
    int count = 0;
    int num;
    while (fscanf(file, "%d", &num) == 1) {
        count++;
    }

    // Đóng tệp văn bản và mở lại để đọc từ đầu
    fclose(file);
    file = fopen("daysonguyen.txt", "r");
    if (file == NULL) {
        printf("Khong the mo tep.\n");
        return 1;
    }

    // Tạo mảng động có kích thước ban đầu bằng số phần tử trong tệp văn bản
    int *arr = (int *)malloc(count * sizeof(int));
    if (arr == NULL) {
        printf("Khong the cap phat bo nho.\n");
        return 1;
    }

    // Đọc dãy số nguyên từ tệp vào mảng động
    int i = 0;
    while (fscanf(file, "%d", &num) == 1) {
        arr[i] = num;
        i++;
    }

    // Đóng tệp văn bản sau khi đọc xong
    fclose(file);

    // Xóa các phần tử có giá trị bằng x
    int newSize = count;
    for (int j = 0; j < count; j++) {
        if (arr[j] == x) {
            newSize--;
        }
    }

    // Tạo mảng động mới với kích thước là newSize
    int *newArr = (int *)malloc(newSize * sizeof(int));
    if (newArr == NULL) {
        printf("Khong the cap phat bo nho.\n");
        return 1;
    }

    // Sao chép các phần tử khác x vào mảng động mới
    int k = 0;
    for (int j = 0; j < count; j++) {
        if (arr[j] != x) {
            newArr[k] = arr[j];
            k++;
        }
    }

    // Giải phóng bộ nhớ của mảng động cũ
    free(arr);

    // In mảng động mới
    printf("Mang sau khi xoa cac phan tu co gia tri bang %d:\n", x);
    for (int j = 0; j < newSize; j++) {
        printf("%d ", newArr[j]);
    }
    printf("\n");

    // Giải phóng bộ nhớ của mảng động mới
    free(newArr);

    return 0;
}
// daysonguyen.txt
1    2    2    3    3    4    2    5

Last updated