[ create a new paste ] login | about

Link: http://codepad.org/9unawFeE    [ raw code | output | fork ]

C, pasted on May 6:
/* Bài 46/128/SBT trường CNTP : Tạo file văn bản có tên là:"INPUT.TXT" có cấu trúc như sau :
	- Dòng đầu tiên ghi N (N là số nguyên dương nhập từ bàn phím) .
	- Trong các dòng tiếp theo ghi N số nguyên ngẫu nhiên trong phạm vi từ 0 đến 100,mỗi dòng 10 số (các số cách nhau ít nhất một khoảng trắng) .
Hãy đọc dữ liệu của file "INPUT.TXT" và lưu vào mảng một chiều A.Thực hiện các công việc sau :
	- Tìm giá trị lớn nhất của mảng A .
	- Đếm số lượng số chẵn,số lượng số lẻ của mảng A .
	- Hãy sắp xếp các phần tử theo thứ tự tăng dần .
Hãy ghi các kết quả vào file văn bản có tên OUTPUT.TXT theo mẫu sau :
		INPUT.TXT	|		OUTPUT.TXT
18				|Cau a:99
87 39 78 19 89 4 40 98 29 65	|Cau b:9 9
20 43 1 99 38 34 58 4		|Cau c:
				|1 4 4 19 20 29 34 38 39 40
			        |43 58 65 78 87 89 98 99	
							       577.cpp */
/* 

Tác giả: Nguyễn Việt Nam Sơn
Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com

Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé.
Mong giúp đỡ được Bạn trên con đường Học Lập Trình.
TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN

*/
// Khai báo các thư viện sử dụng trong chương trình .
#include<stdio.h>				
#include<conio.h>
#include<time.h>
#include<Windows.h>
#define MAX 100

// Hàm nhập số lượng phần tử của mảng .
void NhapN(int &n)
{
	quaylai:printf("\nNhap vao so luong phan tu cua mang:n=");
	scanf("%d",&n);
	if(n<1||n>MAX)
	{
		printf("\nSo ban nhap vao khong hop le!Xin vui long nhap lai!");
		goto quaylai; // Dùng hợp ngữ thay cho vòng lặp chức năng nếu người dùng nhập vào số không thỏa thì chương trình cho phép nhập lại đến khi nào nhập đúng thì thôi .
	}
}

// Hàm ghi File INPUT.TXT
void GhiFile(int a[],int n)
{
	FILE*pFile;
	pFile=fopen("C:\\INPUT.TXT","wt"); // File được tạo nằm trong ổ C .
	fprintf(pFile,"So Luong Cac Phan Tu:%d\n",n); // Ghi giá trị số lượng phần tử vào file .
	for(int i=0;i<n;i++)
	{
		a[i]=rand()%101; // tạo ngẫu nhiên trong đoạn [0,100] .
		fprintf(pFile,"%4d",a[i]); // Ghi giá trị các phần tử trong mảng vào file .
	}
	fclose(pFile); // Đóng file .
}

// Hàm đọc file INPUT.TXT vào chương trình
void DocFile(int a[],int n)
{
	FILE*pFile;
	pFile=fopen("C:\\INPUT.TXT","r+t"); // Mở file ra .
	if(pFile==NULL)
	{
		printf("\nKhong doc duoc File INPUT.TXT");
	}
	else
	{
		for(int i=0;i<n;i++)
		{
			fscanf(pFile,"%d\t",&a[i]); // Đọc các giá trị phần tử trong file vào chương trình .
			printf("a[%d]=%d\n",i,a[i]); // Xuất các giá trị ra màn hình .
		}
	}
	fclose(pFile); // Đóng file .
}

// Hàm tìm giá trị lớn nhất trong mảng và ghi vào file .
void TimMax(int a[],int n)
{
	int max=a[0]; // khởi tạo max = phần tử đầu tiên trong mảng .
	FILE*pFile;
	pFile=fopen("C:\\OUTPUT.TXT","wt"); // Mở file ra .
	for(int i=1;i<n;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
		}
	}
	fprintf(pFile,"Cau a:%d\n",max); // Ghi giá trị max tìm được vào file .
	fclose(pFile); // Đóng file .
}

// Hàm đếm số lượng các phần tử chẵn,phần tử lẻ trong mảng và ghi vào file .
void DemChanLe(int a[],int n)
{
	int dem=0,dem1=0;
	FILE*pFile;
	pFile=fopen("C:\\OUTPUT.TXT","at"); // Mở file ra . Ở đây ta phải để định dạng file là "at" hay là để "a" cũng được . Chức năng là mở tập tin và ghi tiếp dữ liệu cần nạp vào cuối tập tin . Ta không thể xài lại định dạng "wt" vì khi dữ liệu mới vào thì tất cả dữ liệu cũ sẽ bị xóa đi hết .
	for(int i=0;i<n;i++)
	{
		if(a[i]%2==0)
		{
			dem++; // Đếm số lượng các giá trị chẵn trong mảng .
		}
		else
		{
			dem1++; // Đếm số lượng các giá trị lẻ trong mảng .
		}
	}
	fprintf(pFile,"Cau b:%d\t%d\n",dem,dem1); // Ghi dữ liệu vào file .
	fclose(pFile); // Đóng file .
}

// Hàm hoán vị 2 số nguyên .
void HoanVi(int &x,int &y)
{
	int temp=x;
	x=y;
	y=temp;
}

// Hàm sắp xếp mảng tăng dần bằng thuật toán Interchange Sort .
void SapTangDan(int a[],int n)
{
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				HoanVi(a[i],a[j]);
			}
		}
	}
}

// Hàm xuất mảng sau khi đã được sắp tăng dần và ghi vào file .
void XuatMang(int a[],int n)
{
	FILE*pFile;
	pFile=fopen("C:\\OUTPUT.TXT","at"); // Mở file ra . Ở đây ta phải để định dạng file là "at" hay là để "a" cũng được . Chức năng là mở tập tin và ghi tiếp dữ liệu cần nạp vào cuối tập tin . Ta không thể xài lại định dạng "wt" vì khi dữ liệu mới vào thì tất cả dữ liệu cũ sẽ bị xóa đi hết .
	fprintf(pFile,"Cau c:\n"); // Ghi vào file .
	for(int i=0;i<n;i++)
	{
		fprintf(pFile,"%4d",a[i]); // Ghi vào file .
	}
	fclose(pFile); // Đóng file .
}

// Hàm MeNu gom hết mọi dữ liệu làm ở trên vào .
void MeNu()
{
	int a[MAX],n,tieptuc;
	quaylai:NhapN(n);
	GhiFile(a,n);
	DocFile(a,n);
	TimMax(a,n);
	DemChanLe(a,n);
	SapTangDan(a,n);
	XuatMang(a,n);
	// Thông báo .
	printf("\nBan co muon tiep tuc thuc hien chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!");
	tieptuc=getch(); // Lấy key từ bàn phím .
	if(tieptuc=='c'||tieptuc=='C') // Xác nhận khi người dùng nhấn phím C thì sẽ quay lại chương trình .
	{
		system("cls"); // Được hỗ trợ bởi thư viện "Windows.h" chức năng để xóa hết mọi dữ liệu cũ cho phép người dùng nhập vào dữ liệu mới .
		goto quaylai; // Dùng hợp ngữ thay cho vòng lặp . Chức năng để bắt đầu lại chương trình mới . 
	}
}

// Hàm chính .
void main()
{
	MeNu(); // Gọi lại hàm MeNu.
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Line 17: error: conio.h: No such file or directory
Line 19: error: Windows.h: No such file or directory
Line 34: error: expected ';', ',' or ')' before '&' token
In function 'GhiFile':
Line 51: error: 'for' loop initial declaration used outside C99 mode
In function 'DocFile':
Line 70: error: 'for' loop initial declaration used outside C99 mode
In function 'TimMax':
Line 85: error: 'for' loop initial declaration used outside C99 mode
In function 'DemChanLe':
Line 102: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 118: error: expected ';', ',' or ')' before '&' token
In function 'SapTangDan':
Line 128: error: 'for' loop initial declaration used outside C99 mode
Line 130: error: 'for' loop initial declaration used outside C99 mode
In function 'XuatMang':
Line 146: error: 'for' loop initial declaration used outside C99 mode
In function 'main':
Line 176: warning: return type of 'main' is not 'int'


Create a new paste based on this one


Comments: