Cụ thể đề bài như sau:
Viết chương trình thực hiện các công việc sau(Yêu cầu sử dụng con trỏ).
1. Đọc từ file input.txt vào một mảng các số nguyên.
2. Tính tổng các phần tử trong mảng, ghi kết quả ra file văn output.txt.
3. Sắp xếp mảng tăng dần và ghi vào cuối file output.txt
Code mẫu
Để chạy chương trước tiên bạn cần tạo một file input.txt chứa các số nguyên và đặt cùng thư mục với mã nguồn.
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
//Hàm đọc file
void docfile(int *n, int *A){
*n=0;
FILE *f = fopen("input.txt", "rt");
while(!feof(f)) //Nếu còn phần tử tiếp tục thực hiện vòng lặp
{
fscanf(f,"%d", (A+(*n)));//Đọc 1 phần tử từ file
(*n)++;
}
}
//Hàm tính tổng các phần tử cho mảng
int tinhTong(int n, int *A){
int sum=0;
for(int i=0;i<n;i++){
sum = sum+ A[i];
}
return sum;
}
//Hàm sắp xếp
void sapxep(int n, int *A){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++)
{
if(A[i] > A[j]){
int t = A[i];
A[i] = A[j];
A[j] = t;
}
}
}
}
//Ghi file
void ghiFile(int n, int *A){
FILE *f = fopen("output.txt", "wt");
fprintf(f, "%d\n\n\n", tinhTong(n,A));
sapxep(n,A);
for(int i=0;i<n;i++){
fprintf(f,"%d ", A[i]);
}
fclose(f);
}
//Hàm xuất
void xuat(int n, int *A){
printf("Mang doc tu file\n");
for(int i=0;i<n;i++){
printf("%d ", *(A+i));
}
printf("\n\nTong cua mang la: %d \n=>Da duoc ghi vao file output.txt\n", tinhTong(n,A));
printf("\n\nMang da sap xep\n");
sapxep(n,A);
for(int i=0;i<n;i++){
printf("%d ", A[i]);
}
printf("\n\n =>Mang sap xep da ghi vao cuoi file output.txt\n");
}
int main()
{
int n;
int *A = (int*)malloc(sizeof(int) * MAX); //Khai báo con trỏ A và cấp phát bộ nhớ cho A
docfile(&n, A);
xuat(n,A);
ghiFile(n,A);
return 0;
}