Tìn hình là ko bít về pascal ,nhờ các bạn giải thích dùm, chuyển qua qua C thì càng tốt. Uses CRT; Const Max N=40; Max Val=500; Var X,Y : Array[1..MaxN] of Word; Fx : Array[0..MaxN,0..Max Val] of Word; n,i,j : Integer; A,B : Word; Procedure Nhap; Var f: Text; Begin Clrscr; Assign (f,'INT.txt'); Reset(f); Readln(f,n); FillChar(X,SizeOf(X),0); Y:=X; For i:=1 to n do Read(f,X); Close(f); End; Function GetMax(v1,v2 : Word) : Word; Begin if(v1>v1 then GetMax := v1 else GetMax:=v2; End; cảm ơn
Lâu rồi mình chỉ nhớ sơ sơ . đại loại thế này # Uses CRT; ------------//khai báo thủ tục màng hình Const Max N=40; --------------//gán hằng Max Val=500; Var X,Y : Array[1..MaxN] of Word;----------//khai báo mảng kiểu word. word là kiểu số nguyên phạm vi từ 0 đến 65535 Fx : Array[0..MaxN,0..Max Val] of Word;--------------//Cái này nếu ko nhầm là mảng 2 chiều... :018: n,i,j : Integer; -------------// Khai báo 3 biến dữ liệu kiểu số nguyên A,B : Word; --------------// khai báo 2 biến kiểu word Procedure Nhap;------------- //thủ tục Nhap Var f: Text; -----------------//khai báo biến kiểu ký tự Begin Clrscr;--------------------- //xóa màn hình Assign (f,'INT.txt');---------- //gán tên tệp int.txt vào cho biến f. biến f thành biến tệp tin Reset(f); ----------------//Mở tệp tin để đọc. Readln(f,n); -----------//đọc dữ liệu từ tệp vào biến n,nếu không nhầm thì n là biến chứa số phần tử ghi trong tập tin. n được ghi đầu tiên. FillChar(X,SizeOf(X),0); --------//FillChar Ðiền một số byte có giá trị vào một biến. hàm size of trả về kích thước (ô nhớ) của biến dữ liệu hay kích thước của kiểu dữ liệu. Hàm này điền toàn bộ phần tử của mảng bằng 0. Y:=X; ---------------------//gán giá trị X cho Y. For i:=1 to n do ------------------- Read(f,X); ---------------------// đọc dữ liệu trên mỗi dòng và đưa giá trị vào mảng X; Close(f); -------------------//đóng tệp tin. End; Function GetMax(v1,v2 : Word) : Word; //Hàm Getmax kiểu Word, có 2 biến v1 và v2 kiểu word. Begin if(v1>v1 then GetMax := v1 else GetMax:=v2; End; //có thể thấy hàm này trả về giá trị lớn hơn trong 2 giá trị v1 v2 truyền vào. # //đoạn chương trình trên nhìn hơi thiếu... //nếu bạn muốn nghiên cứu thêm pascal thì mình có tài liệu này, bạn có thể download về nghiền ngẫm ^^. Dưới đây là đoạn code mình thử chuyển mã giả qua C. Mã: #defind MaxN 40 #defind MaxVal 500 x[MaxN],y[MaxN]; unsigned n,i,j;// unsigned <=> unsigned int <=> Word. float B,A; file *f; Void nhap() { clrscr(); f=fileopen("INT.txt","r");----//mở tập tin ở chế độ đọc. fscanf(f,"%d",&n); for(i=1;i<=n;i++) // vòng lặp này thay cho fillchar X[i]=0; Y=X; for(i=1;i<=N;i++) fscanf(f;"%d",&X[i]); fclose(f); } unsigned getmax(unsigned v1,unsigned v2) { if(v1>v2) return v1; else return v2; }
Mã: fwrite(X,sizeof(int),1,f); đây là file văn bản nên dùng fprintf() hay fputs() là được. fwrite() dùng cho tập nhị phân. chương trình trên thiếu thì phải, có cái function khai báo để không. Mã: Fx : Array[0..MaxN,0..Max Val] of Word; -->unsigned int Fx[0,MaxN][0,MaxVal] Pascal không còn nhớ nhiều.:001: