Làm việc với File trong Pascal
1. M t file v n b n trên đ a có tên là SON.INF ch a đúng m t dòng bao g m hai s t ộ ă ả ĩ ứ ộ ồ ố ự
nhiên n, m đ c vi t cách nhau m t d u cách. Sau đây là m t ví d v file này:4 5. Em ượ ế ộ ấ ộ ụ ề
hãy vi t đo n ch ng trình nh p hai s này t file trên và in k t qu ra màn hình.ế ạ ươ ậ ố ừ ế ả
Var f:text;
m,n:integer;
Begin
Assign(f,'son.inf'); Reset(f);
Readln(f,m,n);
Close(f);
Writeln(m:4,n:4);
Readln;
End.
2. M t file v n b n trên đ a có tên là SOD.INF ch a đúng hai dòng, m i dòng bao g mộ ă ả ĩ ứ ỗ ồ
đúng m t s t nhiên là n, m. Sau đây là m t ví d v file này:ộ ố ự ộ ụ ề
4
5
Em hãy vi t đo n ch ng trình nh p hai s này t file trên và in k t qu ra màn hình.ế ạ ươ ậ ố ừ ế ả
Var f:text;
m,n:integer;
Begin
assign(f,'sod.inf');reset(f);
Readln(f,m);
Readln(f,n);
close(f);
Writeln(m);
Writeln(n);
Readln;
End.
3. M t file v n b n có tên DATA.TXT l u tr s li u c a m t m ng n s và có d ng sau:ộ ă ả ư ữ ố ệ ủ ộ ả ố ạ
- Dòng đ u tiên c a DATA ghi s n.ầ ủ ố
- n dòng ti p theo c a file ghi n s , m i s trên m t dòng.ế ủ ố ỗ ố ộ
Vi t ch ng trình nh p s li u c a dãy trên vào m t m ng và in ra d li u c a m ngế ươ ậ ố ệ ủ ộ ả ữ ệ ủ ả
trên sau khi đã s p l i theo th t t ng d n.ắ ạ ứ ự ă ầ
Var f: text;
n, i, j, jmax,atg,: integer;
a: array[1..100] of integer;
Begin
assign(f, 'data.txt'); reset(f);
Readln(f, n);
For i:=1 to n do Readln(f,a[i]);
close(f);
For i:=1 to n-1 do
Begin
jmax:=i;
For j:=i to n do
If (a[j]>a[jmax]) then j:=jmax;
atg:=a[i];
a[i]:=a[jmax];
a[jmax]:=atg;
End;
For i:=1 to n do Writeln(a[i]);
1
Readln;
End.
4. M t file v n b n có tên DATA.TXT l u tr s li u c a m t m ng n s và có d ng sau:ộ ă ả ư ữ ố ệ ủ ộ ả ố ạ
- Dòng đ u tiên c a DATA ghi s n.ầ ủ ố
- Dòng ti p theo c a file ghi n s , các s cách nhau b i t i thi u m t d u cách.ế ủ ố ố ở ố ể ộ ấ
Vi t ch ng trình nh p s li u c a dãy trên vào m t m ng và in ra d li u c a m ng ế ươ ậ ố ệ ủ ộ ả ữ ệ ủ ả
trên
Var f:text;
n,i:integer;
a:array[1..100] of integer;
Begin
assign(f,'data.txt'); reset(f);
Readln(f,n);
For i:=1 to n do Read(f,a[i]);
For i:=1 to n do Write(a[i]:8);
Readln;
End.
6. Làm bài t ng t bài 3. i m khác bi t là ch file d li u không có dòng đ u tiênươ ự Đ ể ệ ở ỗ ữ ệ ầ
ghi t ng s d li u nh trong bài 3. Ch ng trình ph i t ki m tra và tính s n đó.ổ ố ữ ệ ư ươ ả ự ể ố
Var f:text;
n,i:integer;
a:array[1..100] of integer;
Begin
assign(f,'data.txt'); reset(f);
i:=1;
Repeat
Readln(f,a[i]);
inc(i);
Until seekEof(f);
n:=i-1;
For i:=1 to n do Writeln(a[i]);
Readln;
End.
7. Làm bài t ng t bài 4. i m khác bi t là ch file d li u không có dòng đ u tiênươ ự Đ ể ệ ở ỗ ữ ệ ầ
ghi n, ch ng trình ph i t ki m tra và và tính s đó.ươ ả ự ể ố
Var f:text;
n,i:integer;
a:array[1..100] of integer;
Begin
assign(f,'data.txt'); reset(f);
i:=1;
Repeat
Read(f,a[i]); inc(i);
Until Eoln(f);
n:=i-1;
For i:=1 to n do Write(a[i]:8);
Readln;
End.
8. Cho file v n b n ghi s li u c a m t b ng s N x M và có d ng sau:ă ả ố ệ ủ ộ ả ố ạ
- Dòng đ u tiên ghi hai s N, M cách nhau b i d u cách.ầ ố ở ấ
- N dòng ti p theo ghi s li u c a N hàng, m i dòng bao g m M s cách nhau b i d uế ố ệ ủ ỗ ồ ố ở ấ
cách.
2
Sau đây là ví d m t file nh v y:ụ ộ ư ậ
4 5
3 5 -1 12 10
-1 2 3 6 1
1 4 5 10 -11
2 -1 4 5 7
Vi t ch ng trình nh p d li u t file trên vào m t m ng s N x M.ế ươ ậ ữ ệ ừ ộ ả ố
Var f:text;
n,m,i,j:integer;
a:array[1..100,1..100] of integer;
Begin
assign(f,'data.txt'); reset(f);
Readln(f,n,m);
For i:=1 to n do
Begin
For j:=1 to m do Read(f,a[i,j]);
Readln(f);
End;
close(f);
For i:=1 to n do
Begin
For j:=1 to m do Write(a[i,j]:8);
Writeln;
End;
Readln;
End.
9. M t file v n b n ghi s li u c a h c sinh có d ng sau:ộ ă ả ố ệ ủ ọ ạ
Nguyen Van Hung 15 G
Bui Quang Than 14 K
Tran Minh Quang 16 G
Le Van Minh 15 T
D li u ghi trong file này có ý ngh a nh sau:ữ ệ ĩ ư
- Dòng đ u tiên ghi đúng m t s n ch s l ng h c sinh trong l p.ầ ộ ố ỉ ố ượ ọ ớ
- n dòng ti p theo m i dòng ghi d li u c a m t h c sinh.ế ỗ ữ ệ ủ ộ ọ
- M i h c sinh đ c ghi các d li u sau:ỗ ọ ượ ữ ệ
H và tên: 20 ký t ;ọ ự Tu i: 3 ký t ; ổ ự X p lo i: 1 ký tế ạ ự
Hãy vi t ch ng trình nh p d li u h c sinh t file trên và đ a vào các m ng d li u ế ươ ậ ữ ệ ọ ừ ư ả ữ ệ
t ng ng, tên file c ng đ c đ c t bàn phím.ươ ứ ũ ượ ọ ừ
Var f: text;
fn: string; {Tên file}
n, i: integer;
ht: array[1..100] of string[20];
t: array[1..100] of string[3];
xl: array[1..100] of char;
Begin
Write('Tên file cần đọc: '); Readln(fn);
assign(f,fn); reset(f);
Readln(f,n);
For i:=1 to n do
Readln(f, ht[i], t[i], xl[i]);
close(f); {kiểm tra}
For i:=1 to n do
Writeln(ht[i],t[i]:4,xl[i]:3);
3
Readln;
End.
10. Làm t ng t bài trên, đi m khác bi t là không có dòng đ u tiên ghi s l ng h c ươ ự ể ệ ầ ố ượ ọ
sinh. Ch ng trình ph i t nh n bi t và tính đ c s n đó.ươ ả ự ậ ế ượ ố
Var f: text;
fn: string; {Tên file}
n, i: integer;
ht: array[1..100] of string[20];
t: array[1..100] of string[3];
xl: array[1..100] of char;
Begin
Write('Tên file cần đọc: ');Readln(fn);
assign(f,fn); reset(f);
i:=1;
While not(eof(f)) do
Begin
Readln(f,ht[i],t[i],xl[i]);
inc(i);
End;
n:=i-1;
close(f); {kiểm tra}
For i:=1 to n do
Writeln(ht[i],t[i]:4,xl[i]:3);
Readln;
End.
11. Th c hi n t t c các thao tác v i các d ng file v n b n nh trong ph n Câu h i, víự ệ ấ ả ớ ạ ă ả ư ầ ỏ
d , bài t p nh ng theo chi u ng c l i, t c là th c hi n các thao tác ghi.ụ ậ ư ề ượ ạ ứ ự ệ
(Bai 1)
Var f:text;
m,n:integer;
Begin
m:=10; n:=4;
assign(f, 'son.inf'); reWrite(f);
Writeln(f, m,' ',n);
close(f);
assign(f, 'son.inf'); reset(f);
Readln(f, m, n);
close(f);
Writeln(m:4, n:4);
Readln;
End.
(Bai 2)
Var f:text;
m,n:integer;
Begin
m:=4; n:=5;
assign(f, 'sod.inf'); reWrite(f);
Writeln(f, m);
Writeln(f, n);
close(f);
assign(f, 'sod.inf'); reset(f);
Readln(f, m); Readln(f, n);
close(f);
4
Writeln(m); Writeln(n);
Readln;
End.
(Bai 3)
Var f:text;
n,i:integer;
a:array[1..100] of integer;
Begin
Write('Nhập số n: ');Readln(n);
Writeln('Nhập dãy n số : ');
For i:=1 to n do
Begin Write('a[',i:2,'] = ');Readln(a[i]); End;
assign(f,'data.txt'); rewrite(f);
Writeln(f,n);
For i:=1 to n do
Begin Writeln(f,a[i]); End;
close(f);
assign(f, 'data.txt'); reset(f);
Readln(f, n);
For i:=1 to n do Readln(f,a[i]);
close(f);
For i:=1 to n do Writeln(a[i]);
Readln;
End.
(Bai 4)
Var f:text;
n,i:integer;
a:array[1..100] of integer;
Begin
Write('Nhập số n: ');Readln(n);
Writeln('Nhập dãy n số: ');
For i:=1 to n do
Begin Write('a[',i:2,'] = ');Readln(a[i]); End;
assign(f,'data.txt'); rewrite(f);
Writeln(f,n);
For i:=1 to n do
Begin Write(f,a[i],' '); End;
Writeln(f);
close(f);
assign(f,'data.txt'); reset(f);
Readln(f,n);
For i:=1 to n do Read(f,a[i]);
close(f);
For i:=1 to n do Writeln(a[i]);
Readln;
End.
(Bai 6)
Var f: text;
n, i: integer;
a: array[1..100] of integer;
Begin
Write('Nhập số n: '); Readln(n);
Writeln('Nhập một dãy số n: ');
assign(f,'data.txt'); rewrite(f);
i:=1;
5