Program Tap Tin So Nguyen; CÁC BÀI TẬP VỀ TỆP 1/ Program Tap Tin So Nguyen; Uses Crt; Var f File Of Integer; So Integer; a Array[1 10] Of Integer; Spt,i,j Integer; Filename String[11]; Begin ClrScr; W[.]
Trang 1CÁC BÀI TẬP VỀ TỆP
1/ Program Tap_Tin_So_Nguyen;
Uses Crt;
Var
f : File Of Integer;
So : Integer;
a : Array[1 10] Of Integer;
Spt,i,j : Integer;
Filename : String[11];
Begin
ClrScr;
Writeln('NHAP SO LIEU CHO
TAP TIN SONGUYEN.DAT');
Writeln(' -')
;
Writeln;
Assign(f,'songuyen.dat');
ReWrite(f);
For i := 1 To 10 Do Begin Write('-So thu: ',i:2,' = ');
Readln(So);
Write(f,so);
End;
Close(f);
Spt := 0;
Reset(f);
While NOT EOF(f) Do Begin
Spt := Spt + 1;
Read(f,so);
a[Spt] := so;
End;
Close(f);
For i := 1 To Spt -1 Do For j := Spt Downto i + 1 Do
If a[j] < a[j-1] Then Begin
So := a[j];
a[j] := a[j-1];
a[j-1] := So;
End;
Writeln;
Writeln('Sau khi sap xep: ');
For i := 1 To 10 Do Write(a[i]:6);
Writeln;
Write(' Bam <Enter> ');
Readln End
2/ Program Ghep_Tap_Tin;
Uses Crt;
Var
f1,f2,f3 : File Of Real;
i : Integer;
So : Real;
Ch : Char;
Begin
ClrScr;
Writeln('NHAP SO LIEU
CHOAP1.DAT');
Writeln(' -');
Writeln;
Assign(f1,'TAP1.DAT');
Rewrite(f1);
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So);
Write(f1,so);
Write(' Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) ='K';
Close(f1);
ClrScr;
Writeln('NHAP SO LIEU CHO TAP2.DAT');
Writeln(' -');
Writeln;
Assign(f2,'TAP2.DAT');
Rewrite(f2);
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So);
Write(f2,so);
Write(' Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) ='K';
Close(f2);
ClrScr;
Writeln('GHEP TAP1 va TAP2 thanh TAP3');
Writeln(' -');
Writeln;
Assign(f3,'TAP3.DAT');
Rewrite(f3);
Reset(f1);
Reset(f2);
While NOT EOF(f1) Do Begin
Read(f1,So);
Write(f3,So);
End;
While NOT EOF(f2) Do Begin
Read(f2,so);
Write(f3,so);
End;
Reset(f3);
While NOT EOF(f3) Do Begin
Read(f3,So);
Write(So :8:1);
End;
Close(f1);
Close(f2);
Close(f3);
Writeln;
Writeln;
Write(‘Da ghep xong, Bam <Enter> '); Readln;
End
3/ Program Doc_Tung_Chu;
Uses Crt;
Var
Filename : String;
f : Text;
Line : String[251];
k : Integer;
Begin
ClrScr;
Writeln('DOC CHAM TAP TIN THEO TUNG CHU');
Writeln(' -');
Writeln;
Write('-Cho biet ten tap tin: ');
Readln(Filename);
Assign(f,Filename);
Reset(f);
While Not EOF(f) Do Begin
Readln(f,line);
For k := 1 To Length(line) Do Begin
Write(line[k]);
Delay(150);
End;
Writeln;
End;
Close(f);
End
4/ Program Doc_Ghi_Tap_Tin;
Var
f1,f2 : Text;
Filename : String;
i : Integer;
St : String;
Begin
Writeln('DANH SO DONG TAP
TIN');
Writeln(' -');
Writeln;
Write('-Cho biet ten tap tin: ');
Readln(Filename);
Assign(f1,filename);
Reset(f1);
Assign(f2,'Newfile.txt');
Rewrite(f2);
i := 0;
While Not EOF(f1) Do Begin
i := i + 1;
Readln(f1,st);
Writeln(f2,i,' ',St);
End;
Close(f1);
Close(f2);
Writeln;
Writeln('Da danh so dong va ghi vao tap tin NEWFILE.TXT');
Writeln;
Trang 2Write(' Bam <Enter> de xem tap tin
NEWFILE.TXT ');
Readln;
Assign(f2,'Newfile.txt');
Reset(f2);
While Not EOF(f2) Do Begin
Readln(f2,st);
Writeln(St);
End;
Close(f2);
Writeln;
Write('Xem xong, ban <Enter> '); Readln
End
5/ Program Tron_Tap_tin;
Uses Crt;
Var
f1,f2,f3 : File Of Integer;
So1,So2 : Integer;
i : Integer;
Ch : Char;
ok1,ok2 : Boolean;
{ -}
Function Layso1(Var So1 :
Integer): Boolean;
Begin
If Not EOF(f1) Then
Begin
Read(f1,So1);
LaySo1 := True;
End
Else
layso1 := False;
End;
{ -}
Function Layso2(Var So2 : Integer):
Boolean;
Begin
If Not EOF(f2) Then
Begin
Read(f2,So2);
LaySo2 := True;
End
Else
layso2 := False;
End;
{ -}
BEGIN
Assign(f1,'so1.dat');
Rewrite(f1);
ClrScr;
Writeln('NHAP TAP TIN SO1');
Writeln(' -');
Writeln;
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So1);
Write(f1,so1);
Write('-Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) = 'K';
Close(f1);
Assign(f2,'so2.dat');
Rewrite(f2);
ClrScr;
Writeln('NHAP TAP TIN SO2');
Writeln(' -');
Writeln;
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So2);
Write(f2,so2);
Write('-Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) = 'K';
Close(f2);
Assign(f3,'so3.dat');
Rewrite(f3);
Reset(f1);
Reset(f2);
ok1 := Layso1(So1);
ok2 := Layso2(so2);
While ok1 Or ok2 Do Begin
If ok1 And ok2 Then {co ca 2 tap tin}
Begin
If So1 < So2 Then Begin
Write(f3,so1);
ok1 := layso1(so1);
End Else Begin Write(f3,so2);
ok2 := Layso2(so2);
End;
End Else
If ok1 Then {chi con tap tin so1.dat}
Begin Write(f3,so1);
ok1 := layso1(so1);
End Else
If ok2 Then {chi con tap tin so2.dat}
Begin Write(f3,so2);
ok2 := Layso2(so2);
End;
End;
Writeln;
Reset(f3);
While not EOF(f3) Do Begin
Read(f3,i);
Write(i:6);
End;
Close(f1);
Close(f2);
Close(f3);
Writeln;
Write('Da tron xong, bam <Enter> '); Readln
END
6/ Program Tao_Tap_Tin_Co_Kieu;
Type
HocSinh = RECORD
Ten : String[7];
Diem : 0 10;
End;
Var
f : File Of Hocsinh;
{ -}
Procedure TaoTapTin;
Var
Tam : HocSinh;
Filename : String;
Begin
Write('-Cho biet ten tap tin: ');
Readln(Filename);
Assign(f,Filename);
{$I-}
Rewrite(f);
{$I+}
If IOResult <> 0 Then Begin
Writeln('Khong mo duoc tap tin:
',Filename);
Halt;
End;
Repeat Write('Ten (bam <Enter> de cham dut) : ');
Readln(Tam.Ten);
If Tam.Ten <> '' Then Begin
Write('-Diem : ');
Readln(Tam.Diem);
Write(f,Tam);
End;
Until Tam.Ten = '';
Close(f);
End;
{ -}
Procedure XemLaiBanGhi;
Var RecNo : Word;
Tam : HocSinh;
Begin Write('-Xem lai ban ghi thu may: ');
Readln(RecNo);
Reset(f);
Seek(f,RecNo-1);
Read(f,Tam);
Writeln('-Ten : ',Tam.Ten);
Writeln('-Diem : ',Tam.Diem);
Trang 3End;
{ -}
BEGIN
TaoTapTin;
Writeln;
XemLaiBanGhi;
Writeln;
Write(' Bam <Enter> ');
Readln;
END
7/ Program Cat_Tap_tin;
Var
f,g1,g2 : File;
Buf : Array[1 63000] Of Byte;
Trungdiem : LongInt;
{ -}
Procedure BaoLoi;
Begin
Writeln('Khong mo duoc tap tin');
Halt;
End;
{ -}
Procedure MoTapTin;
Var
TenTT,TenTT1,TenTT2: String;
Begin
Write('-Ten tap tin nguon: ');
Readln(TenTT);
Write('-Ten tap tin dich 1: ');
Readln(TenTT1);
Write('-Ten tap tin dich 2: ');
Readln(TenTT2);
Assign(f,TenTT);
Reset(f,1);
Assign(g1,TenTT1);
Rewrite(g1,1);
Assign(g2,TenTT2);
Rewrite(g2,1);
If IOResult <> 0 Then
BaoLoi;
End;
{ -}
Procedure TinhTrungDiem;
Begin TrungDiem := (Filesize(f) Div 2);
End;
{ -}
Procedure ChepNuaDau;
Var
S : LongInt;
Num,SoDoc,SoGhi : Word;
Begin
S :=TrungDiem;
Repeat
If Sizeof(Buf) <= S Then Num := Sizeof(Buf) Else
Num := S;
BlockRead(f,Buf, Num,SoDoc);
If IOResult <> 0 Then BaoLoi;
BlockWrite(g1,Buf,SoDoc,SoGhi);
If IOResult <> 0 Then BaoLoi;
Dec(S,Num);
Until S = 0;
Close(g1);
End;
{ -}
Procedure ChepNuaSau;
Var SoDoc,SoGhi : Word;
Begin Seek(f,TrungDiem);
If IOResult <> 0 Then BaoLoi;
Repeat BlockRead(f,Buf, Sizeof(Buf),SoDoc);
If IOResult <> 0 Then BaoLoi;
BlockWrite(g2,Buf,SoDoc,SoGhi);
If IOResult <> 0 Then BaoLoi;
Until (SoDoc = 0) Or (SoGhi <> SoDoc);
Close(g2);
Close(f);
End;
{ -}
BEGIN
MoTapTin;
TinhTrungDiem;
ChepNuaDau;
ChepNuaSau;
Writeln;
Write('Da thuc hien xong, bam
<Enter> ');
Readln;
END
8/ Program Menu;
Uses Crt;
Type
St17 = String[17];
St7 = String[7];
HoSo = RECORD
Holot : St17;
Ten : St7;
ns : Integer;
Diem : Real
End;
Mang = Array[1 100] Of HoSo;
fhs = File Of HoSo;
Var
Filename : String[11];
f : fhs;
Tam : HoSo;
Ch : Char;
{ -}
Procedure Nhap(Var f : fhs);
Begin
Rewrite(f);
With Tam Do
Repeat
Write('-Ho lot (0 de ket thuc): ');
Readln(Holot);
If Holot <> '0' Then
Begin
Write('-Ten: ');
Readln(Ten);
Write('-Nam sinh: ');
Readln(Ns);
Write('-Diem: ');
Readln(Diem);
Write(f,tam);
End;
Until HoLot = '0';
Close(f);
End;
{ -}
Procedure SapXep(Var f : Fhs);
Var i,j,Spt : Integer;
ds : Mang;
Begin Reset(f);
Spt := 0;
While Not EOF(f) Do Begin
Spt := Spt + 1;
Read(f,ds[spt]);
End;
For i := 1 To spt - 1 Do For j := spt Downto i + 1 Do
If ds[j].Ten[1] < ds[j-1].Ten Then Begin
Tam := ds[j];
ds[j] := ds[j-1];
ds[j-1] := Tam;
End;
Rewrite(f);
For i := 1 To spt Do Write(f,ds[i]);
Close(f);
Writeln;
Write('Da sap xep xong, bam
<Enter> ');
Readln;
End;
{ -}
Procedure Xem(Var f : Fhs);
Begin ClrScr;
Writeln(' HO VA TEN DIEM');
Reset(f);
While Not EOF(f) Do Begin
Read(f,Tam);
With Tam Do Writeln(Holot:17,' ',Ten:7,' ',Diem:6:1);
End;
Readln;
Trang 4End;
{ -}
Procedure CapNhat(Var f : Fhs);
Procedure Sua(Var f:Fhs);
Var
Holot1 : St17;
Ten1 : St7;
TimThay : Boolean;
Begin
Repeat
Write('-Holot: ');
Readln(Holot1);
Write('-Ten : ');
Readln(Ten1);
TimThay := False;
Reset(f);
While Not EOF(f) Do
With Tam Do
Begin
Read(f,Tam);
If (Holot = Holot1) And
(Ten = Ten1) Then
Begin
Timthay := True;
Writeln(Holot,' ',Ten,' Diem : ',Diem :
0:1);
Repeat
Writeln('Co sua khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
If Upcase(Ch) = 'C' Then
Begin
Write('-Ho lot: ');
Readln(Holot);
Write('-Ten : ');
Readln(Ten);
Write('-Nam sinh : ',ns);
Write('-Diem : ');
Readln(Diem);
Seek(f,filepos(f)-1);
Write(f,Tam);
End;
End;
End;
If Not TimThay Then
Writeln('Khong tim
thay');
Repeat
Writeln('Tim nu khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
Until Upcase(Ch) = 'K'
End;
{ -}
Procedure Them(Var f: Fhs);
Begin
Reset(f);
Seek(f,Filesize(f));
With Tam Do
Repeat
Write('-Ho lot: ');
Readln(Holot);
Write('-Ten : ');
Readln(Ten);
Write('-Nam sinh : ',ns);
Write('-Diem : ');
Readln(Diem);
Write(f,Tam);
Repeat Writeln('Them nua khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
Until Upcase(Ch) = 'K';
End;
{ -}
Procedure Xoa(Var f : Fhs);
Var
ds : Mang;
Holot1 : St17;
Ten1 : St7;
i,spt,vitri : Integer;
TimThay : Boolean;
Begin Reset(f);
spt := 0;
While Not EOF(f) Do Begin
Read(f,Tam);
spt := spt + 1;
ds[spt] := Tam;
End;
Repeat Write('-Ho lot : ');
Readln(holot1);
Write('-Ten : ');
Readln(Ten1);
TimThay := False;
i := 0;
Repeat
i := i + 1;
If (ds[i].Holot = Holot1) And (ds[i].Ten = Ten1) Then
Begin TimThay := True;
vitri := i;
End;
Until TimThay Or (i > spt);
If TimThay Then Begin
With ds[vitri] Do Writeln(Holot,' ',Ten,' Diem:
',Diem:0:1);
Repeat Writeln('Co xoa khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
If Upcase(Ch) = 'C' Then Begin
spt := spt - 1;
For i := vitri To spt Do ds[i] := ds[i+1];
End;
End Else Writeln('Khong tim thay'); Repeat
Writeln('Tim nua khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
Until Upcase(Ch) = 'K';
Rewrite(f);
For i := 1 To spt Do Write(f,ds[i]);
Close(f);
End;
{Chuong trinh chiinh cua cap nhat} Begin
Repeat Repeat ClrScr;
Writeln(' MENU CAP NHAT '); Writeln('1-Sua');
Writeln('2-Them');
Writeln('3-Xoa');
Writeln('4-Thoat');
Ch := Readkey;
Until Ch in['1' '4'];
Case Ch Of '1' : Sua(f);
'2' : Them(f);
'3' : Xoa(f);
End;
Until Ch = '4' End;
{************ CHUONG TRINH CHINH ***********}
BEGIN
ClrScr;
Write('-Ten tap tin : ');
Readln(Filename);
Assign(f,Filename);
Repeat Repeat ClrScr;
Writeln(' MENU CHINH'); Writeln(' 1-Nhap');
Writeln(' 2-Sap xep');
Writeln(' 3-Xem');
Writeln(' 4-Cap nhat');
Writeln(' 5-Ket thuc');
Writeln;
Ch := Readkey;
Until ch in['1' '5'];
Case Ch Of '1' : Nhap(f);
'2' : SapXep(f);
'3' : Xem(f);
'4' : CapNhat(f);
End;
Until Ch = '5' END
10/ Program DemChu;
Uses Crt;
Type
MangChu = Array[Char] Of Integer;
Var
f : Text;
Filename : String;
Line : String[25];
Trang 5Chu : Char;
Letters,Lines,k : Integer;
Dem : MangChu;
Begin
ClrScr;
For Chu := Chr(0) To Chr(127) Do
Dem[chu] := 0;
Letters := 0;
Write('-Cho biet ten tap tin: ');
Readln(Filename);
Assign(f,Filename);
Reset(f);
While Not EOF(f) Do
Begin
Readln(f,Line);
For k := 1 To Length(line) Do
Begin
If Line[k] In ['a' 'z'] Then
Letters := Letters + 1;
Dem[Line[k]] := Dem[Line[k]] + 1;
End;
End;
Lines := 1;
Close(f);
Writeln('Tap tin: ',Filename,' co tat ca:
',Letters,' chu khong viet hoa');
Writeln;
Writeln('Phan phoi tan suat cua cac chu
nhu sau:');
Writeln;
For Chu :='a' To 'z' Do Begin
Write('-Chu: ',Chu,' = ');
Write((Dem[chu]/Letters * 100):6:2,'
% ');
If (Lines Mod 4) = 0 Then Writeln;
Lines := Lines + 1;
End;
Readln End
Program Tim_Chuoi_Ky_Tu;
Var
Filename : String[12];
f : Text;
St : String;
Ch : Char;
Ok : Boolean;
i,solan:Integer;
Begin
Write('-Ten tap tin: ');
Readln(Filename);
Write('-Nhap chuoi ky tu: ');
Readln(St);
Assign(f,Filename);
Reset(f);
Solan := 0;
While NOt EOF(f) Do Begin
Read(f,Ch);
If ch = St[1] Then Begin
Ok := True;
i := 1;
While Not OK And ( i <
length(St)) Do Begin Read(f,Ch);
If (Ch <> Chr(10)) And (Ch
<> Chr(13)) Then
If Ch = St[1] Then
i := 1 Else Begin
i := i + 1;
If (Ch <> St[i]) Then
Ok := False; End;
End;
If Ok Then Solan := Solan + 1; End;
End;
Write('-Chuoi: ',St,' xuat hien : ',solan,' lan trong tap tin');
Readln;
Close(f);
End
11/ Program Xu_ly_dong;
Var
f1,f2 : Text;
Filename : String[12];
lmax : Integer;
Tam,st,dong : String;
{ -}
Procedure Catdong(Var
st,dong:String;lmax :Integer);
Var
i : Integer;
Begin
i := lmax;
While st[i] <> ' ' Do
i:= i-1;
Dong := copy(st,1,i-1);
Delete(St,1,i);
End;
{ -}
Procedure Lamday(Var dong:
String;lmax : Integer);
Var
i,j : Integer;
Begin
i := lmax - length(dong);
While i <> 0 Do
Begin
j := Length(dong);
While (j > 1) And (i <> 0) Do
If (dong[j]=' ') And (dong[j-1] <> ' ') Then
Begin Insert(' ',dong,j);
j :=j-1;
i := i-1;
End Else
j := j-1;
End;
End;
{ -}
BEGIN
Write('-Ten tap tin: ');
Readln(Filename);
Write('-Chieu dai cua dong: ');
Readln(lmax);
Assign(f1,filename);
Reset(f1);
Assign(f2,'new.txt');
Rewrite(f2);
St:=' ';
While NOt EOF(f1) Do Begin
Readln(f1,tam);
St := St + Tam + ' ';
While length(St) >= lmax Do Begin
Catdong(St,dong,lmax);
Lamday(dong,lmax);
Writeln(f2,dong);
End;
End;
Writeln(f2,St);
Writeln;
Writeln('Da thuc hien xong, bam
<Enter> ');
Readln;
reset(f2);
While Not EOF(f2) Do Begin
Readln(f2,dong);
Writeln(dong);
End;
Writeln;
Write(' Xem xong bam
<Enter> ');
Readln;
Close(f1);
Close(f2);
END