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