Professional Documents
Culture Documents
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
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
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
#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
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
Y i Ai, j * X j
j 1
17