Trong các bài viết trước sinhvientot.net đã hướng dẫn các bạn cách nhập/xuất mảng trong hàm main(). Bài viết này sẽ hướng dẫn các bạn nhập mảng từ file, phát sinh mảng với giá trị ngẫu nhiên, nhập mảng theo yêu cầu…
Trường hợp 1: Nhập mảng cơ bản -> có thể sẽ bị lỗi trong một số trường hợp
void NhapMang(int a[], int &n) { printf("Cho biet so phan tu cua mang: "); scanf("%d", &n); for(int i=0; i<n; i++) { printf("Gia tri phan tu a[%d]=", i); scanf("%d", &a[i]); } }
Trường hợp 2: Nhập mảng n phần tử với yêu cầu số phần tử phải lớn hơn 0, nếu không yêu cầu nhập lại
void NhapMang(int a[], int &n) { do { printf("Cho biet so phan tu cua mang: "); scanf("%d", &n); }while(n<=0); for(int i=0; i<n; i++) { printf("Gia tri phan tu a[%d]=", i); scanf("%d", &a[i]); } }
Trường hợp 3: Nhập mảng N phần tử yêu cầu số phần tử phải lớn hơn 0, nếu không yêu cầu nhập lại. Phát sinh giá trị ngẫu nhiên cho các phần tử mảng (giá trị ngẫu nhiên nhỏ hơn 1000)
void NhapMang(int a[], int &n) { do { printf("Cho biet so phan tu cua mang: "); scanf("%d", &n); }while(n<=0); for(int i=0; i<n; i++) { printf("Gia tri phan tu a[%d]=", i); a[i]=rand()%1000; } }
Trường hợp 4: Viết Hàm cho phép nhập một mảng các số nguyên, Thao tác nhập sẽ kết thúc khi người dùng nhập số 0. Giá trị 0 không đưa vào mảng.
void NhapMang(int a[ ], int &n) { n=0; int x; do{ printf("nhap mot so nguyen. Nhap so 0 de dung: "); scanf("%d", &x); if(x!=0) a[n++]=x; }while(x!=0); }
Trường hợp 5: Nhập mảng N phần tử với số phần tử N vá giá trị từng phần tử đọc từ file
File input.txt có nội dung như sau
5
1 2 3 4 5
void TaoMang(int *arr, int &n) { // mo file de doc FILE* fi = fopen("input.txt", "rt"); if (fi == NULL) printf("Khong mo duoc tap tin!"); //doc du lieu int n; fscanf(fi, "%d", &n); // khoi tao mang a tuong ung voi N phan tu int * arr = new int[n]; for (int i = 0; i < n; i++) fscanf(fi, "%d", &arr[i]); //dong file fclose(fi); }
Xuất mảng
void XuatMang(int a[], int n) { for(int i=0; i<n; i++) printf("%4d", a[i]); }
Xuất mảng ra file
void XuatFile(int* arr, int n) { //mo file de ghi FILE* fo = fopen("output.txt", "wt"); // wt = write (ghi) + text (dang van ban) //ghi du lieu ra file for (int i = 0; i < n; i++) fprintf(fo, "%d ", arr[i]); // dong file fclose(fo); }
Kết quả có định dạng như sau:
File: output.txt
1 2 3 4 5
Xem thêm các bài viết sau:
- Hướng dẫn Dev-C++ căn bản hoặc Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012
- Lý thuyết Mảng một chiều
- Duyệt mảng một chiều
- Thêm/Xóa phần tử trên mảng một chiều