You are on page 1of 17

BI TP V XU

Bi tp 6.1: Vit chng trnh lit k cc t ca mt xu k t c nhp vo t bn phm, mi t


phi c vit trn mt dng.
Uses Crt;
Begin
Var St:String;
Write(Nhap xau St: ); Readln(St);
Procedure XoaTrangThua(Var St:String);
XoaTrangThua(St);
Begin
St:=St+#32;
{Xa cc k t trng u xu}
Writeln(Liet ke cac tu trong xau: );
While St[1]=#32 Do Delete(St,1,1);
While POS(#32,St)<>0 Do
{Xa cc k t trng cui xu}
Begin
While
St[Length(St)]=#32
Do
Delete(St,Length(St),1);
Writeln(Copy(St,1,POS(#32,St)));
{Xa cc k t trng gia xu}
Delete(St,1,POS(#32,St));
While
POS(#32#32,St)<>0
Do
End;
Delete(St,POS(#32#32,St),1);
Readln;
End;
End.
Bi tp 6.2: Vit chng trnh nhp vo mt xu k t t bn phm. Tm xu o ngc ca xu
ri in kt qu ra mn hnh theo 2 cch: qui v khng qui.
tng:- Nu xu St c 1 k t th xu o = St.
- Ngc li: Xu o = K t cui + qui(Phn cn li ca xu St).
Uses Crt;
{Gii thut qui}
Var St:String;
Function DeQui(St:String):String;
{Gii thut khng qui}
Begin
Function XauDao(St:String):String;
If Length(St)<=1 Then DeQui:=St
Var S:String;
Else
DeQui:=St[Length(St)]
+
i:Byte;
DeQui(Copy(St,1,Length(St)-1));
Begin
End;
S:=;
Begin
For i:=Length(St) DowTo 1 Do
Write(Nhap xau St: ); Readln(St);
S:=S+St[i];
Write(Xau dao nguoc: , XauDao(St));
XauDao:=S;
Readln;
End;
End.
Bi tp 6.3: Vit chng trnh nhp vo mt xu k t t bn phm. Thng bo ln mn hnh cc
ch ci c trong xu v s lng ca chng ( Khng phn bit ch hoa hay ch thng).
tng:- Dng mt mng dem vi ch s l cc ch ci lu tr s lng ca cc ch ci trong
xu.
- Duyt qua tt c cc k t ca xu St: Nu k t l ch ci th tng bin mng
dem[St[i]] ln 1 n v.
Uses Crt;
For ch:=A To Z Do dem[ch]:=0;
Var St:String;
{Duyt xu}
dem: Array[A..Z] Of Byte;
For i:=1 To Length(St) Do
i:Byte;
If Upcase(St[i]) IN [A..Z]
ch:Char;
Then Inc(dem[Upcase(St[i])]);
Begin
{Lit k cc k t ra mn hnh}
Write(Nhap xau St: ); Readln(St);
For ch:=A To Z Do
{Khi to mng}
1

If dem[ch]>0 Then Writeln(ch, :


Readln;
,dem[ch]);
End.
Bi tp 6.4: Vit chng trnh xa cc k t ch s trong mt xu k t c nhp vo t bn
phm.
Uses Crt;
Var St:String;
{Hm POSNUM kim tra xem trong xu St c
k t ch s hay khng? Nu c, hm tr v v
tr u tin ca k t ch s, ngc li hm tr
v gi tr 0}
Function POSNUM(St:String):Byte;
Var OK:Boolean;
i:Byte;
Begin
OK:=False;
i:=1;
While (i<=Length(St)) AND (Not OK)
Do
Bi tp 6.5: Vit chng trnh m ho v gii
ca tng k t trong xu.
Uses crt;
Var st:string;
{Hm o bit k t c}
Function DaoBit(c:char):char;
Var n,i,s,bitcuoi,Mask:byte;
Begin
{i k t sang s}
n:=ORD(c);
{s: kt qu o bit, Mask: mt n dng bt
bit th i}
s:=0;
Mask:=128;
For i:=1 To 8 Do {duyt qua 8 bit ca n}
Begin
{Ly bit cui cng ca n: bit cc phi}
bitcuoi:=n AND 1;
n:=n shr 1; {loi b bit cui cng: n:=n DIV
2}
{Bt bit th i ln: t tri sang phi}
if bitcuoi=1 then s:=s OR Mask;
Mask:=Mask shr 1; { Mask:= Mask DIV 2}

If

St[i]

IN

[0..9]

Then

OK:=True
Else i:=i+1;
If OK Then POSNUM:=i
POSNUM:=0;
End;

Else

Begin
Write(Nhap xau St: ); Readln(St);
While
POSNUM(St)<>0
Do
Delete(St,POSNUM(St),1);
Write(Xau sau khi xoa: ,St);
Readln;
End.
m mt xu k t bng cch o ngc cc bit
End;
DaoBit:=CHR(s);
End;
Function MaHoa(st:string):string;
Var i:Byte;
Begin
{o bit tng k t trong xu st}
For i:=1 To Length(st) Do
st[i]:=DaoBit(st[i]);
Mahoa:=st;
End;
Begin
Write('Nhap xau: '); Readln(st);
st:=MaHoa(st);
Writeln('Xau sau khi ma hoa: ',st);
Readln;
st:=MaHoa(st);
Writeln('Xau sau khi giai ma: ',st);
Readln;
End.

Bi tp 6.6: Vit chng trnh thc hin php cng 2 s t nhin ln (khng qu 255 ch s).
Uses crt;
{Them so 0 vao truoc xau ngan}
Var so1,so2,kqua:string;
var i:Byte;
Procedure LamDayXau(Var st1,st2:string);
Begin
2

If Length(st1)>Length(st2) Then
{Ly phn d ca tng a+b}
For i:=1 To Length(st1)-Length(st2) Do
sodu:=(a+b+sodu) DIV 10;
st2:='0'+st2
{i s nguyn c sang xu k t ch}
Else
str(c,ch);
For i:=1 To Length(st2)-Length(st1) Do
{Cng xu ch vo bn tri xu kt qu
st1:='0'+st1;
st}
End;
st:=ch+st;
Function Cong(st1,st2:string):string;
End;
Var i,a,b,c,sodu:Byte;
{X l trng hp s d cui cng >0}
code:integer;
If sodu>0 Then
st,ch:string;
Begin
Begin
str(sodu,ch);
st:=''; sodu:=0;
st:=ch+st;
LamDayXau(st1,st2);
End;
{Ly tng s ca 2 xu: t phi sang tri}
Cong:=st;
For i:=Length(st1) DownTo 1 Do
End;
Begin
Begin
{i k t sang s nguyn}
Write('Nhap so thu nhat: '); Readln(so1);
Val(st1[i],a,code);
Write('Nhap so thu hai: '); Readln(so2);
Val(st2[i],b,code);
kqua:=Cong(so1,so2);
{Tnh tng ca 2 s a,b va ly ra cho
Writeln('Tong= ',kqua);
vo bin c}
Readln;
c:=(a+b+sodu) MOD 10;
End.
BI TP T GII
Bi tp 6.11: Vit chng trnh nhp vo mt xu k t t bn phm. Tm v in ra mn hnh mt
t c di ln nht trong xu.
Gi :Tch tng t so snh (xem bi tp 5).
Bi tp 6.12: Vit chng trnh nhp mt xu k t St t bn phm v mt k t ch. In ra mn
hnh xu St sau khi xa ht cc k t ch trong xu .
Gi : While POS(ch,st)<>0 Do Delete(st,POS(ch,st),1);
Bi tp 6.13: Vit chng trnh nhp mt xu vo t bn phm v thng bo ln mn hnh xu
c phi i xng khng theo 2 cch: qui v khng qui. (V d: abba, abcba l cc xu i
xng).
Gi :
- Nu xu Length(st)<=1 th st l xu i xng
- Ngc li:
+ Nu st[1]<>st[Length(st)] th st khng i xng
+ Ngc li: Gi qui vi xu st sau khi b i k t u v k t cui.
Bi tp 6.14: Vit chng trnh o ngc th t cc t trong mt xu c nhp vo t bn
phm.
V d: Xu Nguyen Van An s thnh An Van Nguyen.
Gi :Tch tng t ni vo u xu mi (xem bi tp 5).
Bi tp 6.15: Vit chng trnh nhp vo 2 xu k t s1 v s2. Kim tra xem xu s2 xut hin bao nhiu
ln trong xu s1. (Lu : length(s2)<= length(s1)).

Gi :
Dng hm POS kim tra v th tc DELETE xa bt sau mi ln kim tra.

Bi tp 6.16: Vit chng trnh nhp vo mt dng vn bn, hiu chnh vn bn theo nhng yu
cu sau y v in vn bn sau khi hiu chnh ra mn hnh:
a. Xa tt c cc k t trng tha.
b. Trc cc du cu khng c cc k t trng, sau cc du cu c mt k t trng.
c. u cu in hoa.
Bi tp 6.17: Vit chng trnh thc hin php nhn 2 s nguyn ln.
Gi :
- Vit hm nhn mt s ln vi s c 1 ch s.
- p dng hm tnh tng 2 s ln (xem bi tp 10).
Bi tp 6.18: Vit chng trnh nn v gii nn mt xu k t .
V d: Xu AAAABBBCDDDDDDDEEF sau khi nn s tr thnh 4A3BC7D2EF.
Bi tp 6.19: Vit chng trnh nhp vo h tn y ca cc hc vin mt lp hc (khng qu
50 ngi). Hy sp xp li h tn ca cc hc vin theo th t Alphabet (Nu tn trng nhau
th xp th t theo h lt, nu h lt cng trng nhau th xp th t theo h). In ra mn hnh danh
sch ca lp hc sau khi a sp xp theo th t Alphabet.
Gi :
- Dng mng xu k t lu tr h tn hc vin.
- o ngc cc t ca h tn trc khi sp xp.
Bi tp 6.20: Vit chng trnh lit k ra mn hnh tt c cc hon v ca mt xu k t.
Gi :Dng gii thut quay lui.

BI TP KIU BN GHI
Bi tp 7.1: Vit chng trnh thc hin php cng 2 s phc.
Uses Crt;
Type Complex = Record
{In kt qu ra mn hnh}
a,b:Real;
Writeln(Tong cua 2 so phuc:);
End;
If c1.b>=0 Then dau:=+i else dau:=Var c1,c2,c3:Complex;
i;
dau:string;
Writeln(c1 = , c1.a:0:2, dau,
Begin
abs(c1.b):0:2); {S phc c1}
Writeln(Nhap so phuc c1:);
If c2.b>=0 Then dau:=+i else dau:=Write(Phan thuc a = ); Readln(c1.a);
i;
Write(Phan ao b = ); Readln(c1.b);
Writeln(c2 = , c2.a:0:2, dau,
abs(c2.b):0:2); {S phc c2}
Writeln(Nhap so phuc c2:);
Writeln(La so phuc:);
Write(Phan thuc a = ); Readln(c2.a);
If c3.b>=0 Then dau:=+i else dau:=Write(Phan ao b = ); Readln(c2.b);
i;
Writeln(c3 = , c3.a:0:2, dau,
{Tnh tng 2 s phc}
abs(c3.b):0:2); {S phc c3}
c3.a := c1.a + c2.a;
Readln;
c3.b := c1.b + c2.b;
End.
Bi tp 7.2: Vit chng trnh qun l im thi Tt nghip ca sinh vin vi 2 mn thi: C s v
chuyn ngnh. Ni dung cng vic qun l bao gm:
Nhp im cho tng sinh vin.
In danh sch sinh vin ra mn hnh.
Thng k s lng sinh vin thi u.
In ra mn hnh hnh danh sch nhng sinh vin b thi li.
4

Uses Crt;
Const Max=200;
Type SinhVien=Record
Hoten:string[30];
DiemCS,DiemCN:Byte;
End;
Var SV:ARRAY[1..Max] Of SinhVien;
n:Byte;
c:Char;
Procedure NhapDanhSach;
Var ch:Char;
Begin
Clrscr;
Writeln('NHAP DANH SACH SINH VIEN');
n:=0;
Repeat
n:=n+1;
With SV[n] Do
Begin
Write('Ho ten: '); Readln(Hoten);
Write('Diem co so: '); Readln(DiemCS);
Write('Diem chuyen nganh: ');
Readln(DiemCN);
End;
Writeln('Nhan phim bat ky de nhap
tiep/Nhan <ESC> de ket thuc!');
ch:=Readkey;
Until ch=#27;
End;
Procedure InDanhSach;
Var ch:Char;
i:Byte;
Begin
Clrscr;
Writeln('DIEM THI TOT NGHIEP SINH
VIEN');
Writeln;
WRITELN('STT
Ho ten
Diem Co so
Diem Chuyen nganh');
For i:=1 To n do
With SV[i] Do
Begin

Writeln(i:3,'.',Hoten:20,DiemCS:5,DiemCN:20
);
End;
ch:=ReadKey;
End;
Procedure DanhSachSVThilai;
Var ch:Char;
i:Byte;
Begin
Clrscr;
Writeln('DANH SACH SINH VIEN THI
LAI');
Writeln;
WRITELN('STT
Ho ten
Diem Co so
Diem Chuyen nganh');
For i:=1 To n do
With SV[i] Do
Begin
If (DiemCS<5)OR(DiemCN<5) Then
Writeln(i:3,'.',Hoten:20,DiemCS:5,DiemCN:20
);
End;
ch:=ReadKey;
End;
Procedure ThongKeSVThiDau;
Var S,i:Byte;
ch:Char;
Begin
S:=0;
For i:=1 To n Do
If
(SV[i].DiemCS>=5)AND(SV[i].DiemCN>=5)
Then S:=S+1;
Writeln('So sinh vien thi dau la: ',s);
ch:=Readkey;
End;
Begin
Repeat
Clrscr;
Writeln('CHUONG TRINH QUAN LY
DIEM THI TOT NGHIEP SINH VIEN');
Writeln('1. Nhap danh sach sinh vien');
Writeln('2. In danh sach sinh vien');
5

Writeln('3. Thong ke so sinh vien thi dau');


'2': InDanhSach;
Writeln('4. danh sach sinh vien thi lai');
'3': ThongKeSVThiDau;
Writeln('<ESC>: Thoat');
'4': DanhSachSVThilai;
c:=Readkey;
End;
Case c Of
Until c=#27;
'1': NhapDanhSach;
End.
Bi tp 7.3: Vit chng trnh nhp vo n nh ca mt a gic li S.
a/ Tnh din tch ca S bit:
1 n
dt(S)= | (xi yi1 xi1yi ) |
2 i1
trong : (xi,yi) l ta nh th i ca a gic S.
b/ Nhp vo thm mt im P(x,y). Hy kim tra xem P nm trong hay ngoi a gic S.
tng:
Ni P vi cc nh ca a gic S th ta c n tam gic: Si= PPiPi+1, vi Pn+1=P1.
n

Nu

dt(S ) = dt(S) th P S.
i

i 1

Uses Crt;
Type Toado=Record
x,y:integer;
end;
Mang=array[0..30] of Toado;
Var n:Byte;
A:Mang;
P:ToaDo;
Procedure NhapDinh(var n:Byte; Var
P:Mang);
Var i:Byte;
Begin
Write('Nhap so dinh cua da giac n = ');
readln(n);
For i:=1 to n do
Begin
Write('P[',i,'].x = ');readln(P[i].x);
Write('P[',i,'].y = ');readln(P[i].y);
End;
End;
Function
DienTichDaGiac(n:Byte;P:Mang):real;
Var i,j:integer;
s:real;
Begin
s:=0;
for i:= 1 to n do

begin
if i=n then j:=1 else j:=i+1;
s:=s+((P[i].x*P[j].y-P[j].x*P[i].y));
end;
DienTichDaGiac:=abs(s)/2;
end;
Function
DienTichTamGiac(A,B,C:ToaDo):real;
Begin
DienTichTamGiac:=abs(A.x*B.yB.x*A.y+B.x*C.y-C.x*B.y+C.x*A.yA.x*C.y)/2;
End;
Function
KiemTra(PP:ToaDo;n:Byte;P:Mang):Boolean;
Var i,j:integer;
s:real;
begin
s:=0;
For i:=1 to n do
begin
if i=n then j:=1 else j:=i+1;
s:=s+DienTichTamGiac(PP,P[i],P[j]);
end;
If round(s)=round(DienTichDaGiac(n,P))
then KiemTra:=true
else KiemTra:=false;
end;
6

Write('P.y = ');readln(P.y);
Begin
If KiemTra(P,n,A) Then Writeln('Diem P
NhapDinh(n,A);
nam trong da giac S.')
Writeln('S=',DienTichDaGiac(n,A):0:2);
Else Writeln('Diem P nam ngoai da giac S.');
Readln;
Readln;
Writeln('Nhap diem P:');
End.
Write('P.x = ');readln(P.x);
BI TP T GII
Bi tp 7.4: Vit chng trnh nhn hai s phc c1, c2.
Bi tp 7.5: Vit chng trnh qun l im thi hc phn ca sinh vin bao gm cc trng sau:
H tn, im Tin, im ngoi ng, im trung bnh, Xp loi. Thc hin cc cng vic sau:
a/ Nhp vo danh sch sinh vin ca mt lp (khng qu 30 ngi), bao gm: H tn, im
Tin, im Ngoi ng. Tnh im trung bnh v Xp loi cho tng sinh vin.
b/ In ra mn hnh danh sch sinh vin ca lp theo dng sau:
H tn

im Tin

Trn Vn An
8
L Th Bo
7
.......................... ............
..

im Ngoi
ng
9
5
.....................

im
T.Bnh
8.5
6.0
............

Xp loi
Gii
T.Bnh
..............

c/ In ra mn hnh danh sch nhng sinh vin phi thi li (n mt trong hai mn).
d/ In ra danh sch nhng sinh vin xp loi Gii.
e/ Tm v in ra mn hnh nhng sinh vin c im trung bnh cao nht lp.
f/ Sp xp li danh sch sinh vin theo th t Alphabet.
g/ Sp xp li danh sch sinh vin theo th t gim dn ca im trung bnh.
h/ Vit chc nng tra cu theo tn khng y ca sinh vin. V d: Khi nhp vo tn
Phuong th chng trnh s tm v in ra mn hnh thng tin y ca nhng sinh vin c tn
Phuong (chng hn nh: Pham Anh Phuong, Do Ngoc Phuong, Nguyen Nam Phuong...).
Bi tp 7.6: Vit chng trnh qun l sch th vin gm cc trng sau: M s sch, Nhan ,
Tn Tc gi, Nh Xut bn, Nm xut bn.
a/ Nhp vo kho sch ca th vin (gm tt c cc trng).
b/ In ra mn hnh tt c cc cun sch c trong th vin.
c/ Tm mt cun sch c m s c nhp vo t bn phm. Nu tm thy th in ra mn hnh
thng tin y ca cun sch , ngc li th thng bo khng tm thy.
c/ Tm v in ra mn hnh tt c cc cun sch c cng tc gi c nhp vo t bn phm.
d/ Lc ra cc cun sch c xut bn trong cng mt nm no .
e/ Tm v in ra mn hnh cc cun sch m nhan c cha t bt k c nhp vo t bn
phm.

BI TP V TP
Bi tp 8.1: To mt file SINHVIEN.DAT lu thng tin ca mt lp sinh vin. Mi sinh vin
cn nhng thng tin sau: H tn, Ngy sinh, Qu qun, im trung bnh, Xp loi (trng xp
loi do chng trnh t tnh ly da vo im trung bnh nh sau: nu im trung bnh < 5 th xp
7

loi D, nu 5 <= im trung bnh < 6.5 th xp loai C, nu 6.5 <= im trung bnh < 8 th xp
loi B, trng hp cn li xp loi A).
Program Vi_du_1;
readln(Bhoten);
Type
if Bhoten <> '' then
St20 = String[20];
begin
St10 = String[10];
sv.hoten:= Bhoten;
SinhVien = record
write('Ngay sinh (dd/mm/yyyy): ');
Hoten: St20;
readln(sv.ngaysinh);
Ngaysinh,Quequan: St10;
write('Quequan: ');
DiemTb: real;
readln(sv.quequan);
Xeploai: Char;
write('Diem trung binh: ');
end;
readln(sv.diemtb);
Var
if sv.diemtb<5 then
f: File of SinhVien;
sv.xeploai:='D'
filename:String;
else
Sv: sinhvien;
if sv.diemtb<6.5 then
Bhoten:st20;
sv.xeploai:='C'
i:word;
else
Begin
if sv.diemtb<8 then
write('Nhap ten file: ');
sv.xeploai:='B'
readln(filename);
else
assign(f,filename);
sv.xeploai:='A';
rewrite(f);
write(f,sv);
i:=1;
end;
repeat
inc(i);
writeln('Nhap thong tin cua cac sinh
until Bhoten = '';
vien');
close(f);
writeln('Thong tin cua sinh vien thu ', i);
end.
write('Ho ten: ');
Bi tp 8.2: In ton b ni dung ca file SINHVIEN.DAT ra mn hnh, nu c, ngc li th
thng bo File khong ton tai.
Program Vi_du_2;
Begin
Type
assign(f,'Sinhvien.dat');
St20 = String[20];
{$I-}
St10 = String[10];
reset(f);
SinhVien = record
{$I+}
Hoten: St20;
if IOResult <> 0 then
Ngaysinh,Quequan: St10;
Begin
DiemTb: real;
writeln('File khong ton tai');
Xeploai: Char;
exit;
end;
End;
Var
writeln(#32:10, 'DANH SACH SINH
f: File of SinhVien;
VIEN');
Sv: sinhvien;
writeln(#32:6,'HO TEN',#32:8,'NGAY
Bhoten:st20;
SINH',#32:4,'QUE QUAN DTB');
i:word;
while not eof(f) do
8

begin
read(f,sv);
with sv do

32:2,quequan,#32:10length(quequan),Diemtb:5:2);
end;
close(f);
writeln(hoten,#32:20,length(hoten),ngaysinh,#
readln;
End.
Bi tp 8.3: In danh sch tt c sinh vin c thng tin lu trong file SINHVIEN.DAT xp loi kh
(B) tr ln.
Program Vi_du_3;
writeln('File khong ton tai');
Type
exit;
St20 = String[20];
end;
St10 = String[10];
n:=0;
SinhVien = record
writeln('Danh sach sinh vien dat loai kha tro
Hoten: St20;
len');
Ngaysinh,Quequan: St10;
while not Eof(f) do
DiemTb: real;
begin
Xeploai: Char;
read(f,sv);
end;
with sv do
Var
if xeploai <= 'B' then { (xeploai =
f: File of SinhVien;
B) or (xeploai = A) }
filename:String;
begin
Sv: sinhvien;
Bhoten:st20;
writeln(hoten,ngaysinh,quequan,diemtb);
n:word;
inc(n);
Begin
end;
assign(f,'sinhvien.dat');
end;
{$I-}
close(f);
reset(f);
writeln('Danh sach nay gom ',n,' sinh
{$I+}
vien');
if IOResult <>0 then
readln;
begin
end.
Bi tp 8.4: Thng tin v im ca sinh vin c h tn l Bhoten, ngy sinh l Bngay v qu qun
l Bquequan b sai lch. Hy sa im v xp loi ca sinh vin ny vi d liu nhp t bn phm.
Program Vi_du_4;
Bhoten:st20;
Type
Bngaysinh,Bquequan:St10;
St20 = String[20];
Begin
St10 = String[10];
assign(f,'sinhvien.dat');
SinhVien = record
{$I-}
Hoten: St20;
reset(f);
Ngaysinh,Quequan: St10;
{$I+}
DiemTb: real;
if IOResult <>0 then
Xeploai: Char;
begin
end;
writeln('File khong ton tai');
Var
exit;
f: File of SinhVien;
end;
filename:String;
write('Ho ten sinh vien: ');
Sv: sinhvien;
readln(bhoten);
9

write('Ngay sinh: ');


if diemtb <6.5 then
readln(Bngaysinh);
xeploai:='C'
write('Que quan: ');
else
readln(bquequan);
if diemtb <8 then
while not Eof(f) do
xeploai:='B'
begin
else
read(f,sv);
xeploai:='A';
with sv do
n:=filepos(f);
if (hoten=bhoten) and
seek(f,n-1);
((ngaysinh=bngaysinh) and
write(f,sv);
(quequan=bquequan)) then
exit;
begin
end;
write('Nhap dtb can sua: ');
end;
readln(diemtb);
Close(f);
if diemtb <5 then
readln;
xeploai:='D'
End.
else
Bi tp 8.5: In ra mn hnh ton b ni dung ca mt file vn bn, tn file c c nhp t bn
phm khi thc hin chng trnh.
Program Vidu_5;
writeln(File khong ton
Var
tai);
f: Text;
halt;
filename,St: String;
end;
Begin
writeln(Noi dung cua file ,filename)
write(Nhap ten file: );
while not Eof(f) do
readln(filename);
begin
assign(f,filename);
readln(f,st);
{$I-}
writeln(st);
reaset(f);
end;
{$I+}
close(f);
if IOResult <> 0 then
readln;
begin
End.
Bi tp 8.6: m s dng, s k t trng xt hin trong mt file vn bn c trn a, tn file
c nhp t bn phm khi chy chng trnh.
Program Vidu_6;
while not Eof(f) do
Var
begin
f: Text;
readln(f,st);
filename,St: String;
inc(NStr);
NLines,NStr: word;
for i:= 1 to length(St) do
i: byte;
if St[i] = #32 then
Begin
inc(NBl);
write(Nhap ten file: );
end;
readln(filename);
Close(f);
assign(f,filename);
writeln(So dong : ,NStr);
reaset(f);
writeln(So ky tu trang: , NBl)
NBl:=0;
readln;
NStr:=0;
End.
10

Bi tp 8.7: Sao chp ni dung ca file SINHVIEN.DAT vo file vn bn SINHVIEN.TXT sao


cho mi sinh vin lu trong mt dng.
Program Vidu_7;
begin
Type
writeln('File khong ton tai');
St20 = String[20];
exit;
St10 = String[10];
end;
SinhVien = record
rewrite(g);
Hoten: St20;
while not Eof(f) do
Ngaysinh,Quequan: St10;
begin
DiemTb: real;
read(f, Sv);
Xeploai: Char;
with Sv do
end;
begin
Var
Str(diemtb,bdiem:5:2);
f: File of SinhVien;
St:=
g:Text;
hoten+#32+ngaysinh+#32+quequan+#32+Bdie
St:String;
m;
Sv: sinhvien;
writeln(g,St);
Bdiem: String[5];
end;
Begin
end;
assign(f,'sinhvien.dat');
Close(f);
{$I-}
Close(g);
reset(f);
readln;
{$I+}
End.
if IOResult <>0 then
Bi tp 8.8: Mt ma trn mxn s thc c cha trong mt file vn bn c tn MT.INP gm: dng
u cha hai s m, n; m dng tip theo ln lt cha m hng ca ma trn. Hy vit chng trnh
c d liu t file MT.INP, tnh tng ca tng hng ma trn v ghi ln file vn bn c tn
KQ.OUT trong , dng u cha s m, dng th hai cha m tng ca m hng (m,n<=200).
MT.INP

KQ.OUT
54
5
3 8 1 5
15 4 8 12 12
5 7 8 0
4 3 1 6
2 4 1 7
3 6 8 -5
Program Vidu_8;
Var
f,g: Text;
S:array[byte] of real;
m,n,i,j: byte;
Begin
assign(f,MT.INP);
reset(f);
readln(f,m,n);
fillchar(S,m,0);

for i:= 1 to m do
begin
for j:=1 to n do
begin
read(f,x);
S[i]:=S[i]+x;
end;
readln(f);
end;
close(f);
11

assign(g,KQ.OUT);
write(g,S[i]:0:2,#32);
rewrite(g);
close(g);
writeln(g,m);
End.
for i:= 1 to m do
Ch :
Chng trnh trn khng kim tra s tn ti ca file MT.INP, nu cn c th kim tra
tng t cc v d trn.
Tng ca mi hng c lu trong mng mt chiu S (phn t S[i] lu tng ca hng i)
Bi tp 8.9: Cho 3 ma trn s nguyn A = (aj)mxn, B = (bjk)nxp, C = (ckl)pxq, c cha trong file
MATRIX.INP gm: dng u cha 4 s m, n, p, q. m+n+p dng tip theo ln lt cha m hng
ma trn A, n hng ma trn B v p hng ma trn C. Vit chng trnh c d liu t file
MATRIX.INP v tnh ma trn tch D = AxBxC ri ghi ln file vn bn c tn MATRIX.OUT
trong : Dng u cha m, q; m dng tip theo cha m hng ca ma trn D.
n

d il a ij * b jk * c kl
j 1 k 1

Program Vidu_9;
Var
f,g: Text;
A, B, C, D:array[1..100,1..100] of
integer;
m,n,p,q,i,j,k,l,r,s: byte;

for

to

do

read(f,C[k,l]);
readln(f);
end;
close(f);
assign(g,MATRIX.OUT);
rewrite(g);
writeln(g,m,#32,q);
for i:= 1 to m do
begin
for l:=1 to q do
begin
for j:= 1 to n

Begin
assign(f,MATRIX.INP);
reset(f);
readln(f,m,n,p,q);
fillchar(D,mxq,0);
for i := 1 to m do
begin
for j:= 1 to n do read(f,A[i,j]);
readln(f);
end;
for j:= 1 to n do
begin
for
k:=1
to
p
read(f,B[j,k]);
readln(f);
end;
for k:= 1 to p do
begin

l:=1

do
for k:=1 to p do

D[i,l] := D[i,l] + A[i,j]*B[j,k]*C[k,l];


write(g,D[i,l],
do

#32);
end;
writeln(g);
end;
close(g);
readln;

End.
Ch : Cng thc tnh gi tr ca cc phn t ma trn D = (dil)mxq nh sau:
Bi tp 8.10: Mt ma trn mxn s thc c cha trong mt file vn bn c tn DULIEU.INP
gm: dng u cha hai s m, n; m dng tip theo ln lt cha m hng ca ma trn. Hy vit
chng trnh c d liu t file DULIEU.INP, cho bit cc hng ca ma trn c tng phn t trn
12

hng ln nht. Kt qu ghi ln file vn bn c tn DULIEU.OUT , trong dng u cha gi


tr ln nht ca tng cc phn t trn mt hng, dng th hai cha ch s cc hng t gi tr tng
ln nht (m,n<=100).
Chng hn
DULIEU.INP

DULIEU.OUT
65
34
3 6 8 12 2
256
7 5 6 10 6
82451
35613
10 12 3 1 8
88891
Program Vi_du_10;
Var
f,g: Text;
S:array[1..100] of real;
T: Set of byte;
GTMax: real;
m,n,i,j: byte;
Begin
assign(f,DULIEU.INP);
reset(f);
readln(f,m,n);
fillchar(S,m,0);
for i:= 1 to m do
begin
S:=0;
for j:=1 to n do
begin
read(f,x);
S[i]:=S[i]+x;
end;
readln(f);

end;
close(f);
T:=[1];
GTMax:=S[1];
for i:= 2 to m do
if S[i] > GtMax then
begin
T:=[i];
GtMax:= S[i];
end
else
if S[i] = GTMax then
T:= T+[i];
assign(g,DULIEU.OUT);
rewrite(g);
writeln(g,GTMax:0:2);
for i:=1 to 100 do
if i in T then
write(g,i,#32);
readln;
End.

Ch :
Chng trnh trn dng mng S lu tng gi tr cc phn t trn mi hng. C th, S[i] l
tng gi tr cc phn t trn hng th i ca ma trn cho.
Tp T , GTMax ln lt l tp cha cc ch s cc hng v gi tr ln nht ca cc phn t trn
mi hng ti thi im ang xt. Xut pht ta xem hng th nht c tng gi tr ln nht. Khi
xt hng th i c cc trng hp sau:
- S[i] > GTMax: S[i] mi l tng ln nht v lc ny ch c hng i t c gi tr ny
- S[i] = GTMax: c thm hng i t gi tr ln nht.
- S[i] < GTMax: khng c g thay i
Bi tp 8.11: Vit chng trnh sao chp ni dung ca mt file cho trc vo file khc, tn ca
file ngun v file ch c nhp t bn phm khi chy chng trnh.
13

Program Sao_chep_File;
assign(g,file_dich);
const
rewrite(g);
bufsize = 200;
Temp:= filesize(f);
var
while Temp > 0 do
f,g: file;
begin
File_nguon, file_dich: String;
if bufsize < =Temp then
Buf: array[1..63000] of Byte;
No_read:= bufsize
No_read, Temp: integer;
else
Begin
No_read:= Temp;
write(Nhap ten file nguon: );
BlockRead((f, Buf, No_read);
readln(file_nguon);
BlockWrite(g,Buf, No_Read);
assign(f,file_nguon);
Temp:=Temp No_read;
reset(f);
end;
write(Nhap ten file dich: );
close(g);
readln(file_dich);
End.
BI TP T GII
Bi tp 8.12:Vit chng trnh i tn mt file c trn a.
Gi : Dng th tc Rename.
Bi tp 8.13:Vit chng trnh xa mt file c trn a.
Gi : Dng th tc Erase.
Bi tp 8.14:Vit chng trnh ni 2 file vn bn c trn a thnh mt file th 3 vi tn file
c nhp vo t bn phm.
Gi : - M file 1 v file 2 c d liu, m file 3 ghi d liu.
- Ln lt c tng phn t trong file 1 v 2 lu vo file 3.
- ng c ba file li.
Bi tp 8.15:Vit chng trnh thc hin cc cng vic sau:
1. To ra 2 file s nguyn v sp xp chng theo th t tng dn.
2. Hy ni 2 file li vi nhau thnh file th 3 sao cho file mi vn c th t tng dn.
Gi : Xem gii thut bi tp 5.15.
Bi tp 8.16:Cho a thc P(x) = a0 + a1x + a2x2 + ... + anxn
Trong n l bc ca a thc v a0, a1, ... , an l cc h s ca a thc c lu trong mt
file vn bn vi qui c sau:
- Dng u ca file vn bn cha bc ca a thc v gi tr ca x.
- Dng tip theo cha cc h s ca a thc.
V d: P(x) = 3 + 2x - 5x2 + 4x3 , x = 2.5 s c lu trong file vn bn nh sau:
3
2.5
3
2
-5
4
Vit chng trnh c file vn bn trn ly cc s liu ri tnh gi tr ca a thc.
Gi : - T chc mng lu a thc.
- Vit th tc c file text lu vo mng.
- Tham kho bi tp 5.8.
Bi tp 8.17: Vit chng trnh m s t c trong mt file vn bn.
Gi : - Vit hm COUNT m s t ca 1 dng.
- c tng dng ca file vn bn, dng hm COUNT cng dn vo bin dem.
Bi tp 8.18: Ti mt ca hng, ngi ta qun l cc hot ng MUA/BN trong nm bng cng
mt loi ho n. Mi ho n l mt bn ghi gm cc trng:
14

SoHoadon (s ho n); Thang (thng mua/bn); Mahang (m hng mua/bn); Loai (nhn
mt trong hai gi tr M(mua) hoc B (bn)
Nh vy cn c vo trng Loai ta bit l ho n mua hay ho n bn. Vit chng trnh
cho php nhp vo mt dy cc ho n v lu vo file c tn Hoadon.dat, qu trnh nhp dng
khi SoHoadon = 0. Tnh s d trong thng n (n c nhp t bn phm khi thc hin chng
trnh) . Bit rng s d trong mt thng c tnh theo cng thc:
S d = Tng bn - Tng mua,
trong tng bn, tng mua ln lt l tng s tin bn, mua trong thng .
Yu cu:
Khi nhp ch kim tra Loai ch nhn mt trong hai gi tr M hoc B v thng ch nhn
gi tr t 1 n 12.
Khng c s dng mng.
Hng dn: Khai bo file lu cc ho n, mi ho n l mt bn ghi nh sau
Type
Hoadon = record
SoHoadon: word;
Thang: byte;
Mahang: string[5];
Loai: char;
end;
Var f: file of hoadon;
Bi tp 8.19: Ngi ta qun l cc u sch ca mt th vin bng mt bn ghi gm c cc
trng: Masach, Tensach, Tentacgia, Nhaxb (nh xut bn), Namxb (nm xut bn), SoLuong.
Vit chng trnh cho php thc hin cc thao tc sau:
a. Nhp vo cc u sch c trong th vin v lu vo file c tn Sach.dat, qu trnh nhp
dng khi m sch a vo l mt xu rng.
b. Duyt v in ra tn cc quyn sch c xut bn sau nm m (m c nhp t bn phm khi
thc hin chng trnh).
c. B sung sch vo th vin theo yu cu: nu sch c th ch tng s lng sch b sung,
ngc li thm mt u sch mi vo file.
Ch :Khng c s dng mng
- Khi nhp ch kim tra nm xut bn <= nm hin ti
- Sau khi in ra danh sch cc u sch xut bn sau nm m, cho bit thm danh sch c
bao nhiu u sch tt c.
Hng dn: Khai bo th vin l mt file cc u sch, mi u sch l mt bn ghi nh sau
Type St5 = String[5];
St20 = String[20];
Dausach = Record
Masach: St5,
Tensach, Tentacgia, Nhaxb: St20,
Namxb: word;
SoLuong: byte;
end;
Var f: file of DauSach;
Bi tp 8.20: Ngi ta lu thng tin cc cn b trong c quan vo file c tn CANBO.DAT, mi
cn b l mt bn ghi gm cc trng: STT, Hoten, Ngaysinh, Diachi, HSLuong, HSPhucap,
SoDT. Hy vit chng trnh thc hin cc yu cu sau:
a. Nhp danh sch cn b v lu vo file, qu trnh nhp dng khi h tn nhp vo l xu rng
v trng STT chng trnh t gn.
15

b. In ra danh sch cn b c h s lng nm trong khong t x n y, x v y l cc s thc


c nhp t bn phm khi thc hin chng trnh.
c. Sao chp thng tin cc cn b c tui trn 50 vo mt file khc.
d. In bng lng ca tt c cn b lu trong file CANBO.DAT ra mn hnh gm cc thng tin:
STT, Hoten, HSLuong, Luong, trong Luong c tnh theo cng thc Luong =
(HSLuong+HSPhucap)*290000, d liu in ra nh dng theo ct. Cui bng, in tng lng
ca ton c quan.
e. Sao chp ni dung ca file CANBO.DAT vo file vn bn CANBO.TXT, mi cn b tng
ng mt dng.
Hng dn: Khai bo mi cn b l mt bn ghi nh sau
Type St10 = String[10];
St20 = String[20];
Canbo = Record
Hoten, Diachi: St20,
Ngaysinh: St10; {dd/mm/yyyy}
HSluong, HSPhucap: real;
SoDT: St10; {S in thoi }
end;
Var f: file of Canbo;
Khi nhp ngy sinh phi kim tra nh dng theo yu cu: dd/mm/yyyy
Tui ca mt cn b c tnh bng nm hin ti tr cho nm sinh. Nm sinh ly t 4 k t
cui cng ca ngy sinh v chuyn sang dng s.
Bi tp 8.21: Vit chng trnh nhp vo tn mt file vn bn. Kim tra file ny c tn ti trn a
khng? Nu c, in ni dung ca file t dng th m n dng th n, trong m v n l hai s
nguyn dng bt k c nhp t bn phm khi thc hin chng trnh.
Hng dn: M file bng th tc Reset, ri chuyn con tr v dng th m, c v in n dng (hoc
cho n ht file).
Bi tp 8.22:Gi s trong mt file vn bn trn a c tn l MATRIX.TXT ngi ta lu cc s
liu v mt ma trn A cp mxn v mt vector X n chiu. Cch lu tr nh sau:
Dng u tin cha hai s m v n
Dng th hai cha vector X
m dng tip theo ln lt cha m hng ca ma trn A
Gia cc s trong mt dng cch nhau mt k t trng
Vit chng trnh tnh gi tr vector Y = AX v a kt qu ra mn hnh ng thi lu vo cui
file MATRIX.TXT (A v X c ly t file MATRIX.TXT)
Yu cu:
Chng trnh phi thit lp cc th tc sau
LayDulieu(A,X,m,n) thc hin vic c d liu t file MATRIX.TXT v gn cho A, X, m, n
TinhTich(A,X,m,n,Y) thc hin vic tnh vector Y
LuuKetqua(Y,m) thc hin vic in vector Y ra mn hnh v lu vo cui file MATRIX.TXT
Thnh phn th i ca vector Y c tnh theo cng thc
m

Y i Ai, j * X j
j 1

Bi tp 8.23: Gi s trong mt file vn bn trn a c tn l DANHBA.TXT lu danh b in


thoi trong thnh ph. Cch lu nh sau:
Dng u lu hai s nguyn dng m v n, trong m l s my in thoi thuc c quan nh
nc, cn n l s my thuc t nhn.
16

m dng tip theo lu thng tin ln lt ca m my in thoi thuc c quan nh nc, mi


dng ghi s in thoi, mt k t trng v sau l tn c quan.
n dng tip theo na lu thng tin ln lt ca n my in thoi t nhn, mi dng ghi s in
thoi, mt k t trng v sau l h tn ch in thoi.
Vit chng trnh c d liu t file DANHBA.TXT v in bng danh b in thoi ra mn hnh
theo th t tng dn ca ch my in thoi, cc my in thoi thuc c quan nh nc in trc
ri n cc my in thoi t nhn. Danh sch in ra theo 3 ct, ct 1 ghi s in thoi, ct 2 ghi
tn c quan hoc tn ch my in thoi, ct 3 ghi loi l TN (t nhn) hoc NN (nh nc)
Yu cu:
Khai bo kiu bn ghi l MAYDT bao gm 3 trng: SoDt, TenChu, Loai
Thit lp th tc LayDulieu(A,k) c d liu t file DANHBA.TXT v lu vo mng A
(mng cc MAYDT) vi k l s phn t ca mng.
Thit lp th tc SAPXEP(A,k) sp xp mi nhm my in thoi nh nc, t nhn theo
th t tng dn ca tn ch my in thoi trong mng A.
Thit lp th tc INKETQUA(A,k) in ra mn hnh danh b in thoi t mng A.
Bi tp 8.24: Cho mt file vn bn c c tn l MATRIX.TXT vi ni dung nh sau:
Dng u tin ca file cha hai s nguyn dng m v n ln lt l s hng v s ct ca mt
ma trn cp mxn (m,n <=50).
m dng tip theo mi dng cha n s nguyn l ga tr cc phn t ca mi hng.
Hy vit chng trnh thc hin cc yu cu sau:
a. Vit th tc LAYDULIEU c d liu t file MATRIX.TXT v lu vo mng hai chiu
A.
b. Vit hm MAXDONG(i:Byte): LongInt tr v gi tr ln nht ca hng i.
c. Ghi cc gi tr ln nht ca mi hng vo cui file MATRIX.TXT.
Bi tp 8.25: Vit chng trnh to ra hai tp tin lu cc s kiu word m cc s trong mi file
c sp th t tng dn. Hy to tp tin mi cha tt c cc s ca 2 tp tin trn sao cho th t
tng dn vn c duy tr.
Ch : Khng c dng mng.
Bi tp 8.26: Gi s trong mt file vn bn trn a c tn l MT.DAT ngi ta lu cc s liu
v hai ma trn A v B cng cp mxn. Cch lu tr nh sau:
Dng u tin cha hai s m v n
m dng tip theo ln lt cha m hng ca ma trn A
m dng tip theo na ln lt cha m hng ca ma trn B
Gia cc s trong mt dng cch nhau mt k t trng
Vit chng trnh tnh ma trn tng C = A + B v ghi kt qu vo file MT.OUT vi cu trc:
dng u cha s m, m dng tip theo cha ma hng ca ma trn C.
Bi tp 8.27: c th sao chp cc file c kch thc ln ln a mm, ngi ta chia nh file cn
chp thnh nhiu file c kch thc nh hn, sau ni cc file ny li bng lnh copy. Hy vit
chng trnh sao chp mt file thnh hai file c kich thc bng nhau. Tn ca tp tin ngun v
hai tp tin ch c nhp t bn phm khi thc hin chng trnh.
Hng dn: Khai bo cc file ngun v ch l cc file khng nh kiu. Gi Temp l mt na
kch thc ca file ngun, tnh bng byte. Thc hin vic sao chp t byte u tin n byte th
Temp vo file ch th nht, sau chp phn cn li ca file ngun vo file ch th hai.

17

You might also like