Sei sulla pagina 1di 267

Th Vin Cc Dng Bi Tp Pascal ca Tin Hc 11 - Phn 1 1/Sp Xp Theo Tn: Code: PhanTu := PhanTu + 1; a[PhanTu] := Tam^; End; Until

HoLot = '0'; For i := 1 To PhanTu - 1 Do For j := PhanTu DownTo i+1 Do If a[j].Ten[1] < a[j-1].Ten[1] Then Begin Tam^ := a[j]; a[j] := a[j-1]; a[j-1] := Tam^; End; Writeln; Writeln('------------------------------------'); Writeln('| HO VA TEN | DIEM |'); Writeln('|--------------------------|-------|'); For i := 1 To PhanTu Do With a[i] Do Writeln('|',HoLot:17,' ',Ten:7,' |',Diem:5:1,' |'); Writeln('------------------------------------'); Readln END. 2/Sp xp im tng: Code: Program Sap_Xep_Diem_Tang; TYPE ConTro = ^Lop; Lop = RECORD HoTen : String[24]; NamSinh : Integer; DiemTb : Real; End; VAR Hs : Array[1..50] Of lop; i,j,n : Integer; Tam : ConTro; Begin Writeln('SAP XEP DIEM TANG DAN);'); Writeln('Giai thuat noi Buble'); Writeln('--------------------'); New(Tam); Writeln; Write('-So hoc sinh: '); Readln(n); For i := 1 To N Do With Hs[i] Do Begin Write('+Ho ten hoc sinh thu: ',i:2,' la: ');

Readln(Hoten); Write('+Nam sinh: '); Readln(NamSinh); Write('+Diem trung binh: '); Readln(DiemTb); End; For i := 1 To N-1 Do For j := 1 To N-i Do If Hs[j].DiemTb > Hs[j+1].DiemTb Then Begin Tam^ := Hs[j]; Hs[j] := Hs[j+1]; Hs[j+1] := Tam^; End; Writeln; Writeln(' DANH SACH SAP XEP'); Writeln; For i := 1 To N Do With Hs[i] Do Writeln('-',HoTen:24,' :',Namsinh:4,' , ',DiemTb:5:2); Readln End. 3/Ha n: Code: Program Hoa_Don; CONST

Max = 100; TYPE ConTro = ^HoaDon; HoaDon = RECORD NguoiMua : String[24]; TenHang : String[10]; DonGia : Real; SoLuong : Integer; End; VAR a : Array[1..Max] Of HoaDon; DsTenHang : Array[1..Max] Of String[10]; Tam : ConTro; Spt, SoTenHang, i, j : Integer; Tong : Real; KiemTra : Boolean; BEGIN Writeln('HOA DON BAN HANG'); Writeln('----------------'); Writeln; Spt := 0; New(Tam); With Tam^ do Repeat Write('-Ten nguoi mua (go 0 de thoat): '); Readln(NguoiMua);

If NguoiMua <> '0' Then Begin Write('-Ten hang: '); Readln(TenHang); Write('-Don gia : '); Readln(DonGia); Write('-So luong: '); Readln(SoLuong); Spt := Spt + 1; a[Spt] := Tam^; End; Until NguoiMua = '0'; SoTenHang := 0; For i := 1 To Spt Do Begin KiemTra :=False; For j := 1 To SoTenHang Do If DsTenHang[j] = a[i].TenHang Then KiemTra := True; If NOT KiemTra Then Begin SoTenHang :=SoTenHang + 1; DsTenHang[SoTenHang]:=a[i].TenHang; End; End; Writeln; For i := 1 To SoTenHang Do Begin Tong := 0; For j := 1 To Spt Do With a[j] Do If TenHang = DsTenHang[i] Then Tong := Tong + (DonGia * Soluong); Writeln(' +Tong so tien mua: ',DsTenHang[i]:10,' = ',tong:10:2); End; Readln END. 4/Th vin sch: Code: Program Thu_Vien; Uses Crt; TYPE ConTro = ^ThuVien; ThuVien = RECORD TenSach TacGia Namxb : Byte; NguoiMuon: String[24]; Next : ConTro; End; VAR First,Last,Newp ds,dm : Integer;

: String[30]; : String[24];

: ConTro;

Ch : Char; HeapTop : ^Integer; BEGIN ClrScr; GotoXY(5,25); Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat'); Window(1,1,80,24); Writeln('QUAN LY THU VIEN'); Writeln('----------------'); Writeln; ds := 0; dm := 0; First := Nil; Mark(Heaptop); Repeat New(Newp); With Newp^ Do Begin Write('-Ten sach : '); Readln(TenSach); If TenSach <> '' Then Begin ds := ds + 1; Write('-Tac Gia: '); Readln(TacGia); Write('-Nam xuat ban : '); Readln(Namxb); Write('-Nguoi muon (Khong co ai muon thi bam <Enter>: '); Readln(NguoiMuon); If NguoiMuon <> '' Then dm := dm + 1; End; End; If First = Nil Then First := Newp Else Last^.Next := Newp; Last :=Newp; Last^.Next := Nil; Ch := ReadKey; Until Ch = #27; ClrScr; Writeln('QUAN LY THU VIEN'); Writeln('----------------'); While First <> Nil Do With First^ Do Begin Writeln('-Ten sach: ',TenSach); Writeln('-Tac gia : ',TacGia); Writeln('-Nam Xuat ban: ',Namxb); Writeln('-Nguoi muon : ',NguoiMuon); First := Next; End; Writeln;

Writeln('+Tong so sach: ',Ds); Writeln('+So sach cho muon: ',Dm); Release(HeapTop); Writeln; Write(' Bam <Esc> de thoat'); Readln END. 5/H S Nhn Vin: Code: Program Ho_So_Nhan_Vien; Uses Crt; TYPE ConTro = ^HoSo; HoSo = RECORD HoTen : String[24]; Tuoi : Integer; Luong : LongInt; Next : ConTro; End; VAR First, Last, Newp : ConTro; Hoten1, Hoten2 : String[24]; i,TuoiMax,TuoiMin : Integer; LuongMax, LuongMin,LuongTb : LongInt; Ch : Char; HeapTop :^Integer; Begin ClrScr; Writeln('HO SO NHAN VIEN'); Writeln('---------------'); Writeln; GoToXY(5,25); Write('Bam <Enter> de tiep tuc, bam <Esc> de thoat '); Window(1,2,80,25); First :=Nil; Mark(HeapTop); i := 0; Repeat i := i + 1; New(Newp); With Newp^ Do Begin Write('-Ho ten nhan vien thu: ',i:2,' la= '); Readln(HoTen); Write('-Tuoi = '); Readln(Tuoi); Write('-Bac luong = '); Readln(Luong); TuoiMax := Tuoi; TuoiMin := Tuoi; LuongMax := Luong; LuongMin := Luong; HoTen1 := HoTen; HoTen2 := HoTen;

End; If First = Nil Then First := Newp Else Last^.Next := Newp; Last := Newp; Last^.Next := Nil; Ch := ReadKey; Until Ch = #27; Writeln; While First <> Nil Do With First^ Do Begin If Tuoi > TuoiMax Then TuoiMax := Tuoi Else If Tuoi < TuoiMin Then TuoiMin := Tuoi; If Luong > LuongMax Then Begin LuongMax := Luong; HoTen1 := HoTen; End Else If Luong < LuongMin Then Begin LuongMin := Luong; HoTen2 := HoTen; End; First := Next; End; Writeln; Writeln('Nhan vien co tuoi lon nhat la: ',TuoiMax); Writeln('Nhan vien co tuoi nho nhat la:',TuoiMin); Writeln('Nhan vien: ',HoTen1,' ,co bac luong lon nhat: ',LuongMax:10); Writeln('+Nhan vien: ',HoTen2,' ,co bac luong nho nhat: ',LuongMin:10); Release(HeapTop); Writeln; Write(' Bam <Enter> de ket thuc '); Readln End. 6/Tnh im xp hng: Code: Program Tinh_Diem_Xep_Hang; TYPE ConTro = ^Lop; Lop = RECORD HoTen : String[24]; NamSinh Tb1,Tb2,Tb : Real; End; VAR

: Integer;

Hs : Array[1..50] Of lop; i,j,n,Hang: Integer; Tam : ConTro; Begin Writeln('TINH DIEM VA XEP HANG);'); Writeln('Giai thuat noi Buble'); Writeln('--------------------'); Writeln; New(Tam); Write('-So hoc sinh: '); Readln(n); For i := 1 To N Do With Hs[i] Do Begin Write(' +Ho ten hoc sinh thu: ',i:2,' la: '); Readln(Hoten); Write(' +Nam sinh: '); Readln(NamSinh); Write(' +Diem trung binh hoc ky 1: '); Readln(Tb1); Write(' +Diem trung binh hoc ky 2: '); Readln(Tb2); Tb :=(Tb1 + Tb2)/2; Writeln; End; For i := 1 To N-1 Do For j := 1 To N-i Do If Hs[j].Tb < Hs[j+1].Tb Then Begin Tam^ := Hs[j]; Hs[j] := Hs[j+1]; Hs[j+1] := Tam^; End; Writeln; Writeln(' DANH SACH XEP HANG'); Writeln; Hang := 1; For i := 1 To N Do Begin If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then Hang := i; Writeln(' .Hoc sinh : ',Hs[i].HoTen); Writeln(' .Nam sinh : ',Hs[i].NamSinh); Writeln(' .Diem trung binh ca nam : ',Hs[i].Tb:5:2); Writeln(' .Xep hang ca nam : ',Hang); End; Readln End. 7/Hon v chui: Code: Program Hoan_Vi_Chuoi; Uses Crt; VAR

Chuoi1,Chuoi2,Tam :^String; Begin ClrScr; Writeln('HOAN VI 2 CON TRO THAY CHO HOAN VI NOI DUNG'); Writeln('-------------------------------------------'); Writeln; New(Chuoi1); New(Chuoi2); Chuoi1^ := 'Giao trinh Turbo Pascal 7.0'; Chuoi2^ := 'Giao trinh FoxPro 2.6'; Writeln; Writeln('NOI DUNG BAN DAU CUA 2 CHUOI'); Writeln('----------------------------'); Writeln; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('-Chuoi thu hai : ',Chuoi2^); Writeln; Writeln('NOI DUNG SAU KHI HOAN VI 2 CON TRO'); Writeln('----------------------------------'); Writeln; Tam := Chuoi1; Chuoi1 := Chuoi2; Chuoi2 := Tam; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('-Chuoi thu hai : ',Chuoi2^); Dispose(Chuoi1); Dispose(Chuoi2); Writeln; Write(' Bam <Enter> . . . '); Readln; End. 8/Tch danh sch chn l: Code: Program Tach_Danh_Sach_Chan_Le; Uses Crt; TYPE Mang = Array[1..100] Of Integer; VAR i,j,k,n : Integer; a,b,c : Mang; Begin ClrScr; Writeln(' NHAP DANH SACH'); Writeln(' --------------'); Write('-So phan tu: '); Readln(n); For i := 1 To n Do Begin Write('-Phan tu thu: ',i:2,' = '); Readln(a[i]); End; Writeln; Writeln('TACH THANH 2 DANH SACH'); Writeln('----------------------');

Writeln; j := 1; k := 1; For i := 1 To n Do If Odd(a[i]) Then Begin b[j] := a[i]; j := j + 1; End Else Begin c[k] :=a[i]; k := k + 1; End; Writeln; Writeln(' -Danh sach thu nhat ( so le ) '); Writeln; For i := 1 To j-1 Do Write(b[i],' '); Writeln; Writeln; Writeln(' -Danh sach thu hai ( so chan ) '); Writeln; For i := 1 To k-1 Do Write(c[i],' '); Writeln; Write(' Bam <Enter> . . . '); Readln End. 9/o ngc danh sch: Code: Program Dao_Nguoc_Danh_Sach; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD So : Integer; Next : ConTro; End; VAR Nut1,Tam1,Tam2 : ConTro; Ch : Char; BEGIN ClrScr; Writeln(' DAO NGUOC DANH SACH'); Writeln(' -------------------'); Nut1 := Nil; Repeat New(Tam1); Write('-Nhap so: '); Readln(Tam1^.So); Tam1^.Next := Nut1; Nut1 := Tam1; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K';

Tam1 := Nut1; Nut1 := Nil; Repeat Tam2 := Tam1^.Next; Tam1^.Next := Nut1; Nut1 := Tam1; Tam1 := Tam2; Until Tam1 = Nil; Writeln('Sau khi dao: '); Tam1 := Nut1; While Tam1 <> Nil Do Begin Write(Tam1^.So:6); Tam1 := Tam1^.Next; End; Writeln; Write(' Bam <Enter> . . . '); Readln END. 10/Ghp Chui: Code: Program Ghep_Chuoi; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD Kt : Char; Next : ConTro; End; VAR Dau1,Cuoi1 : ConTro; Dau2,Cuoi2 : ConTro; Tam : ConTro; Ch : Char; i : Integer; BEGIN ClrScr; Writeln('CHUOI THU NHAT'); Writeln('--------------'); Writeln; i := 0; Repeat i := i + 1; New(Tam); Write('-Ky tu thu: ',i:2,' : '); Readln(Tam^.Kt); If i = 1 Then Begin Dau1 := Tam; Cuoi1 := Tam; End Else Begin Cuoi1^.Next := Tam;

Cuoi1 := Tam; End; Write('Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; ClrScr; Writeln('CHUOI THU HAI'); Writeln('--------------'); Writeln; i := 0; Repeat i := i + 1; New(Tam); Write('-Ky tu thu: ',i:2,' : '); Readln(Tam^.Kt); If i = 1 Then Begin Dau2 := Tam; Cuoi2 := Tam; End Else Begin Cuoi2^.Next := Tam; Cuoi2 := Tam; End; Write('Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; Cuoi1^.Next := Dau2; Cuoi2^.Next :=Nil; Writeln; Writeln(' KET QUA'); Writeln('---------'); Tam := Dau1; While Tam <> Nil Do Begin Write(Tam^.Kt); Tam := Tam^.Next; End; Writeln; Write(' Bam <Enter> . . . '); Readln END. 11/Cy nh phn (hay): Code: Program Cay_Nhi_Phan; Uses Crt; TYPE Str = String[24]; ConTro = ^BanGhi; BanGhi = RECORD HoTen : Str; Luong : Real; Trai,Phai : ConTro;

VAR

End;

Goc : ConTro; Nv : BanGhi; Ketthuc : Boolean; Ch : Char; {--------------------------------} Procedure Chen(Var Goc : ConTro; Nv : BanGhi); Var P,P1 : ConTro; Begin If goc = Nil Then Begin New(Goc); With Goc^ Do Begin HoTen := NV.HoTen; Luong := NV.Luong; Trai := Nil; Phai := Nil; End; End Else Begin P := Goc; P1 := Nil; While P <> Nil Do Begin P1 := P; If Nv.HoTen <= P^.HoTen Then P := P^.Trai Else P := P^.Phai; End; New(P); With P^ Do Begin HoTen := NV.HoTen; Luong := NV.Luong; Trai := Nil; Phai := Nil; End; If NV.HoTen <=P1^.HoTen Then P1^.Trai := P Else P1^.Phai := P; End; End; {--------------------------------} Procedure Xoa(Var Goc : ConTro; Nv : BanGhi); Var P,P1,Q,Q1 : ConTro; Nhanh :(NhanhTrai,NhanhPhai); Begin If Goc = Nil Then Writeln('Cay rong')

Else Begin P := Goc; P1 := Nil; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do Begin P1 := P; If Nv.HoTen < P^.HoTen Then Begin P := P^.Trai; Nhanh := NhanhTrai; End Else Begin P := P^.Phai; Nhanh := NhanhPhai; End; End; If P = Nil Then Writeln('Khong tim thay') Else Begin If (P^.Trai = Nil) Then Q := P^.Phai Else Begin Q := P^.Trai; Q1 := Nil; While Q^.Phai <> Nil Do Begin Q1 := Q; Q := Q^.Phai; End; If Q1 <> Nil Then Begin Q1^.Phai := Q^.Trai; Q^.Trai := P^.Trai; End; If P1 = Nil Then Goc := Q Else Begin If Nhanh = NhanhTrai Then P1^.Trai := Q Else P1^.Phai := Q; End; Dispose(P); End; End; End; End; {--------------------------------} Procedure Tim(Goc : ConTro; Nv : BanGhi); Var

P : ConTro; Begin P := Goc; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do If NV.HoTen < P^.HoTen Then P := P^.Trai Else P := P^.Phai; If P = Nil Then Writeln('Khong tim thay') Else Begin Writeln('Tim thay'); Writeln(P^.HoTen,' ', P^.Luong:8:1); End; End; {--------------------------------} Procedure LNRLietKe(Goc : ConTro); Begin If Goc = Nil Then Begin Writeln('Cay rong, chua co du lieu'); End Else Begin If Goc^.Trai <> Nil Then LNRLietKe(Goc^.Trai); Writeln(Goc^.HoTen,', ',Goc^.Luong:8:1); If Goc^.Phai <> Nil Then LNRLietKe(Goc^.Phai); End; End; {--------------------------------} BEGIN Repeat ClrScr; Writeln; Writeln('CAC CHUC NANG CAY NHI PHAN'); Writeln('--------------------------'); Writeln; Writeln('1-Khoi tao cay'); Writeln('2-Noi them vao cay'); Writeln('3-Xoa khoi cay'); Writeln('4-Tim kiem tren cay'); Writeln('5-Liet ke danh sach'); Writeln('6-Ket thuc chuong trinh'); Writeln; Write('Chon cac chuc nang tu 1 den 6: '); Readln(Ch); Case Ch Of '1' : Begin ClrScr; Writeln('1-KHOI TAO CAY'); Writeln('Cay co thu tu LNR'); Writeln('-----------------');

TU');

Writeln; Goc := Nil; KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Begin Write('-Bac luong : '); Readln(Luong); Chen(Goc,Nv); End Else KetThuc := True; End; Until ketThuc; End; '2' : Begin ClrScr; Writeln; Writeln('2-NOI VAO CAY THEO THU Writeln('-------------------------'); Writeln; KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Begin Write('-Bac luong : '); Readln(Luong); Chen(Goc,Nv); End Else KetThuc := True; End; Until ketThuc; End '3' : Begin ClrScr; Writeln; Writeln('3.XOA KHOI CAY'); Writeln('--------------'); Writeln; KetThuc := False; Repeat With Nv Do Begin Write('Ho ten can xoa, hoac <Enter> de ngung: ');

'4' Scr;

Readln(HoTen); If HoTen <> '' Then Xoa(Goc,NV) Else KetThuc := True; End; Until KetThuc; End; : Begin

Clr

Wri teln('4-TIM KIEM TREN CAY'); Writeln('-------------------'); Writeln; ketThuc := False; Repeat With Nv Do Begin Write('Ho ten can tim, hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Tim(Goc,NV) Else KetThuc := True; End; Until KetThuc; End; '5' : Begin Clr Scr; Wri teln('5-LIET KE NOI DUNG CAY'); Writeln('Hien thi theo thu tu ABC...'); Writeln('---------------------------'); Writeln; LNRLietKe(Goc); Writeln; Write('Xem xong bam <Enter> . . . '); Readln End; '6' : Begin Wri

teln('7- KET THUC CHUONG TRINH'); Writeln; End; End; Until Ch = '6' END.

12/i thp phn ra nh phn: Code:

Program Doi_thap_phan_ra_nhi_phan; Var He10,N,Y:Word; He2,Tam:String; Begin Writeln('DOI SO TU HE THAP PHAN SANG HE NHI PHAN'); Writeln(' -----------------'); Writeln; Write('-Nhap so nguyen he thap phan: '); Readln(He10); N:=He10; He2:=' '; Repeat Y:=He10 Mod 2; Str(Y, Tam); He2:=Tam + He2; He10:= He10 Div 2; Until He10 = 0; Writeln; Writeln('+So he 10 la : ',N); Writeln('+Doi sang he 2 la: ',He2); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 13/Mng k t: Code: Program Mang_Ky_Tu; Var a:Array[Char] Of Integer; Ch:Char; Begin Writeln('IN MA ASCII CUA CAC KY TU'); Writeln('------------------------'); For Ch:='A' To 'Z' Do Begin a[Ch]:=Ord(Ch); Writeln('-Ky tu: ',Ch,' ma ASCII = ',a[ch]); End; Writeln; Writeln('Bam phim <Enter> de ket thuc'); Readln End. 14/Trung bnh cng: Code: Program Tb_cong; Var i,so,dem,tong:Integer; Tb:Real; A:Array[1..100] Of Integer; Begin Writeln('TINH TRUNG BINH CONG CAC SO NGUYEN');

Writeln('----------------------------------'); Writeln; dem:=0; Tong:=0; Write('-Nhap so nguyn: '); Readln(so); While so > 0 Do Begin dem:=dem+1; a[dem]:=so; Write('-Nhap so nguyen (-1 de ngung): '); Readln(so); End; For i:=1 to dem Do Tong:=Tong+A[i]; Tb:=Tong/dem; Writeln; Writeln('+Trung binh cong cua: ',dem:2,' so vua nhap = ',Tb:8:2); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 15/Chn mt s vo hng: Code: Program Chen; Var i,spt:Integer; so,vitri:Integer; a:Array[1..100] Of Integer; Begin Writeln('CHEN MOT SO VAO MANG'); Writeln('--------------------'); Write('-Co bao nhieu phan tu: '); Readln(spt); For i:=1 To spt Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; Writeln; Writeln('MANG TRUOC KHI CHEN'); For i:=1 To spt Do Write(a[i]:6); Writeln; Write('-Can che so: '); Readln(so); Write('-Vao vi tri: '); Readln(vitri); For i:=spt+1 Downto Vitri+1 Do a[i]:=a[i-1]; a[vitri]:=so; spt:=spt+ 1; Writeln; Writeln('MANG SAU KHI CHEN');

For i:=1 To spt Do Write(a[i]:6); Readln End. 16/Xa phn t trong mng: Code: Program Xoa_Pt; Var i,spt,vitri:Integer; a:Array[1..100] Of Integer; Begin Writeln('XOA PHAN TU TRONG MANG'); Writeln('----------------------'); Writeln; Write('-Mang co bo nhieu phan tu: '); Readln(spt); For i:=1 To spt Do Begin Write('-Phan tu A[',i:2,']= '); Readln(a[i]); End; Writeln; Writeln(' MANG TRUOC KHI XOA'); Writeln(' -----------------'); Writeln; For i:=1 To spt Do Write(a[i]:6); Writeln; Writeln; Write('-Vi tri muon xoa: '); Readln(vitri); For i:=vitri to spt - 1 Do a[i]:=a[i+1]; spt:=spt - 1; Writeln; Writeln(' MANG SAU KHI XOA'); Writeln(' ----------------'); Writeln; For i:= 1 to spt Do Write(a[i]:6); Writeln; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 17/Thng k cc s l: Code: Program So_le; Var a:Array[1..255] Of Integer; i,spt,sole:Byte; Begin

Writeln('THONG KE CAC SO LE'); Writeln('------------------'); Write('-Can nhap bao nhieu so: '); Readln(spt); For i:=1 To spt Do Begin Write('-Phan tu A[',i:2,']= '); Readln(a[i]); End; sole:=0; For i:=1 To spt Do If Odd(A[i]) Then Inc(sole); Writeln; Writeln('-Tong so cac so da nhap: ',spt); For i:= 1 To spt Do Write(a[i]:6); Writeln; Writeln('-Tong so cac so le la: ',sole); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 18/Tnh gi tr ca a thc bc N: Code: Program Da_thuc; Var a:Array[1..255] Of Real; i,n:Byte; x,p:Real; Begin Writeln('TINH GIA TRI CUA DA THUC BAC N'); Writeln('------------------------------'); Writeln; Write('-Cho biet bac cua da thuc: '); Readln(n); For i:= N Downto 0 Do Begin Write('-Cho biet he so A[',i:2,']= '); Readln(a[i]); End; Writeln; Write('-Cho biet X= '); Readln(x); P:=a[n]; For i:= N Downto 1 Do P:=x * p + a[i-1]; Writeln; Writeln('+Tri cua da thuc P(x)= ',P:0:6); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 19/i s nguyn kiu Word ra h thp lc:

Code: Program Doi_he_16; Const KyTuHe16:array[0..$F] Of Char ='0123456789ABCDEF'; Var SoWord:Word; SoHex:String[4]; Begin Writeln('DOI SO NGUYEN KIEU WORD RA HE THAP LUC'); Writeln('--------------------------------------'); Writeln; Write('-Nhap so kieu Word: '); Readln(SoWord); SoHex[0]:=#4; SoHex[1]:= KyTuHe16[Hi(SoWord) SHR 4]; SoHex[2]:= KyTuHe16[Hi(SoWord) AND $F]; SoHex[3]:= KyTuHe16[Lo(SoWord) SHR 4]; SoHex[4]:= KyTuHe16[Lo(SoWord) AND $F]; Writeln('+So nguyen kieu Word = ',soWord); Writeln('+Doi ra so he thap luc = $',SoHex); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 20/i s nguyn kiu Word ra h nh phn: Code: Program Doi_he_2; Const KyTuHe2:array[0..1] Of Char ='01'; Var SoWord:Word; SoBinary:String[16]; i:byte; Begin Writeln('DOI SO NGUYEN KIEU WORD RA HE NHI PHAN'); Writeln('--------------------------------------'); Writeln; Write('-Nhap so kieu Word: '); Readln(SoWord); SoBinary[0]:=#16; For i:=15 DownTo 0 Do If (SoWord AND (1 SHL i)) = (1 SHL i) Then SoBinary[16-i]:= KyTuHe2[1] Else SoBinary[16-i]:= KyTuHe2[0]; Writeln('+So nguyen kieu Word = ',soWord); Writeln('+Doi ra so he nhi phan= B ',SoBinary); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End.

21/Cng 2 s nguyn:

Code: Program Cong_so; Uses Crt; Const spt=301; Type mang=Array[1..spt] Of Integer; Var a,b,kq:Mang; k,na,nb,nmax,tam:Integer; Begin ClrScr; Writeln('CONG 2 SO NGUYEN'); Writeln('----------------'); Writeln; Writeln('+SO THU NHAT (-1 de ket thuc) '); na:=0; Repeat na:=na+1; Write('-Chu so thu: ',na,' = '); Readln(a[na]); Until a[na]=-1; na:=na-1; For k:=0 To na-1 Do a[spt-k]:=a[na-k]; For k:=1 to spt-na Do a[k]:=0; ClrScr; Writeln('+SO THU HAI (-1 de ket thuc) '); nb:=0; Repeat nb:=nb+1; Write('-Chu so thu: ',nb,' = '); Readln(b[nb]); Until b[nb]=-1; nb:=nb-1; For k:=0 To nb-1 Do b[spt-k]:=b[nb-k]; For k:=1 to spt-nb Do b[k]:=0; If na>nb Then nmax:=na Else nmax:=nb; tam:=0; For k:=spt Downto spt-nmax Do Begin kq[k]:=(a[k]+b[k]+tam) Mod 10; tam:=(a[k]+b[k]+tam) Div 10; End; ClrScr; Writeln('KET QUA CONG 2 SO NGUYEN'); Writeln('------------------------'); Write('*So thu nhat: '); For k:=spt-na+1 To spt Do

Write(a[k],' '); Writeln; Write('*So thu hai : '); For k:=spt-nb+1 To spt Do Write(b[k],' '); Writeln; Write('*Tong = '); For k:=Spt-nmax To spt Do Write(kq[k],' '); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 22/Nhn 2 s nguyn: Code: Program Nhan_so; Uses Crt; Const spt=900; Type mang=Array[1..spt] Of Integer; Var a,b,c,kq:Mang; i,j,k,na,nb,tam:Integer; {---------------------------} Procedure Nhap(Var a:mang; Var na:Integer); Var k:Integer; Begin na:=0; Repeat na:=na+1; Write('-Chu so thu: ',na,' = '); Readln(a[na]); Until a[na]=-1; na:=na-1; For k:=0 To na-1 Do a[spt-k]:=a[na-k]; For k:=1 to spt-na Do a[k]:=0; End; {---------------------------} Procedure Cong(a:mang; Var b:mang); Var tam1,tam2,k:Integer; Begin tam1:=0; For k:= spt Downto 1 Do Begin tam2:=(a[k]+b[k]+tam1) Div 10; b[k]:=(a[k]+b[k]+tam1) Mod 10; tam1:=tam2; End; End;

{---------------------------} BEGIN ClrScr; Writeln('NHAN 2 SO NGUYEN'); Writeln('----------------'); Writeln; Writeln('+SO THU NHAT (-1 de ket thuc) '); Nhap(a,na); ClrScr; Writeln('+SO THU HAI (-1 de ket thuc) '); Nhap(b,nb); For k:=1 To spt Do kq[k]:=0; For j:=spt Downto spt-nb Do Begin For k:=1 to spt Do c[k]:=0; tam:=0; For i:=spt Downto spt-na Do Begin c[j+i-spt]:=(b[j]*a[i]+tam) Mod 10; tam:=(b[j]*a[i]+tam) Div 10; End; Cong(c,kq) End; ClrScr; Writeln('KET QUA NHAN 2 SO NGUYEN'); Writeln('-----------------------'); Writeln; Write('*So thu nhat: '); For k:=spt-na+1 To spt Do Write(a[k],' '); Writeln; Write('*So thu hai : '); For k:=spt-nb+1 To spt Do Write(b[k],' '); Writeln; Write('*Tich = '); For k:=Spt-(na+nb)+1 To spt Do Write(kq[k],' '); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln END. 23/Ma trn vung 10x10 phn t: Code: Program Ma_tran_vuong; Uses Crt; Var a:Array[1..10, 1..10] Of Integer; i,j:Integer; Begin Writeln('MA TRAN VUONG 10 x 10 PHAN TU'); Writeln('-----------------------------');

ClrScr; Window(10,5,60,25); For i:= 1 To 10 Do Begin For j:=1 To 10 Do Begin If i=j Then a[i,j]:=i Else a[i,j]:=0; Write(a[i,j]:5); End; Writeln(#10) End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 24/Tm mt s trong mng: Code: Program Tim_so; Var a:Array[1..4,1..6] Of Integer; i,j,so,solan:Integer; Begin Writeln('TIM MOT SO TRONG MANG'); Writeln('---------------------'); Writeln; For i:=1 To 4 Do For j:=1 to 6 Do Begin Write('-Phan tu A[',i,',',j,']= '); Readln(a[i,j]); End; Writeln; Write('-So muon tim: '); Readln(so); solan:=0; For i:=1 To 4 Do For j:=1 To 6 Do If so=a[i,j] Then Begin solan:=solan+1; Writeln('+Lan: ',solan,' tai hang: ',i,' cot: ',j); End; Writeln; Writeln('+Tong so lan xuat hien la: ',solan); For i:=1 To 4 Do Begin For j:=1 To 6 Do Write(a[i,j]:8); Writeln; End; Readln

End. 25/Gii h phung trnh tuyn tnh 2 n: Code: Program Giai_he_PT_tuyen_tinh; Var A:Array[1..2, 1..2] Of Real; C:Array[1..2] Of Real; x,y,dt,dtx,dty:Real; i,j:Integer; Begin Writeln('GIAI HE PT TUYEN TINH 2 AN'); Writeln('--------------------------'); Writeln; Writeln('-Nhap cac he so A cua he phuong trinh: '); For i:=1 to 2 Do For j:=1 To 2 Do Begin Write('+Phan tu A[',i,',',j,']= '); Readln(a[i,j]); End; Writeln; Writeln('-Nhap cac he so C cua he phuong trinh: '); For i:=1 to 2 Do Begin Write('+Phan tu C[',i,']= '); Readln(c[i]); End; Writeln; {Giai he phuong trinh} Dt:= a[1,1]*a[2,2]-a[1,2]*a[2,1]; {Dt: Dinh thuc} Dtx:=c[1]*a[2,2]-c[2]*a[2,1]; Dty:=a[1,1]*c[2]-a[1,2]*c[1]; If Dt <> 0 Then Begin x:=Dtx / Dt; y:=Dty / Dt; Writeln('X= ',x); Writeln('Y= ',y); End Else Begin If (Dtx=0) And (Dty=0) Then Writeln(#7,#7,#7,' Co vo so nghiem') Else Writeln(#7,#7,#7,'Vo nghiem'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 26/Nhn ma trn: Code:

Program Nhan_ma_tran; Const Max=10; Type Matran=Array[1..Max,1..Max] Of Integer; Var A,B,C:Matran; hang1,cot1,i,j,m,n,q:Integer; Begin Writeln('NHAN MA TRAN'); Writeln('------------'); Writeln; Writeln('MA TRAN A:'); Write('-So hang = '); Readln(m); Write('-So cot = '); Readln(n); For i:=1 To m Do For j:=1 To n Do Begin Write('+Phan tu A[',i,',',j,' = '); Readln(a[i,j]); End; Cot1:=m; Hang1:=m; Writeln; Writeln('MA TRAN B:'); Write('-So hang = '); Readln(m); Write('-So cot = '); Readln(n); For i:=1 To m Do For j:=1 To n Do Begin Write('+Phan tu B[',i,',',j,' = '); Readln(b[i,j]); End; For i:=1 To Hang1 Do For j:=1 To n Do Begin c[i,j]:=0; For q:=1 To Cot1 Do c[i,j]:= c[i,j] + a[i,q] * b[q,j]; End; For i:=1 to hang1 Do Begin For j:= 1 To n Do Write((c[i,j]):8); Writeln; End; Readln End. 27/Tm v xa cc k t trng nhau trong chui: Code:

Program Tim_Xoa; Var St,St1:String; Ch:Char; i,l,l1:Byte; Begin Writeln('TIM VA XOA CAC KY TU TRUNG NHAU TRONG CHUOI'); Writeln(' -----------------'); Writeln; Write('-Nhap mot chuoi: '); Readln(St); St1:=St; i:=1; l:=Length(St); While i <= l Do Begin i:=i+1; If St[i]=St[i - 1] Then Begin Writeln('+Ky tu thu: ',i:2,' la: ',St[i],' bi trung lap'); Write('Ban co muon xoa ky tu nay khong (c/k)'); Readln(Ch); If UpCase(Ch)='C' Then Begin Delete(St,i,1); i:= i - 1; End; End; End; l1:=Length(St); Writeln; Writeln('+Chuoi ban dau : ',St1,' co: ',l:2,' ky tu'); Writeln(' Sau khi xoa ky tu trung nhau'); Writeln(' Chuoi con lai: ',St,' gom: ',l1:2,' ky tu'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 28/Tm chui 2 xut hin trong chui 1: Code: Program Tim_chuoi; Var St1,St2:String; i,sl:Integer; Begin Writeln('TIM CHUOI HAI XUAT HIEN TRONG CHUOI MOT'); Writeln(' --------------'); Writeln; Write('-Chuoi thu nhat: '); Readln(St1); Write('-Chuoi thu hai : '); Readln(St2);

End.

sl:=0; For i:=1 To Length(St1) Do If St2 = Copy(St1,i,Length(St2)) Then sl:=sl+1; Writeln; Writeln('+Chuoi thu 2 xuat hien: ',sl:2,' lan trong chuoi 1'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln

29/i s La m ra s thp phn: Code: Program So_La_Ma; Label l1; Var St:String; tiep:Char; i,So:Integer; Begin Writeln('DOI SO LA MA RA SO THAP PHAN'); Writeln(' ------------'); Writeln; L1:Write('-Nhap so La ma: '); Readln(St); So:=0; i:=Length(St); While i > 0 Do Case St[i] Of 'I':Begin So:=So+1; i:=i-1; End; 'V':If (i > 1) And (St[i-1] = 'I') Then Begin So:=So+4; i:=i-2; End Else Begin So:=So+5; i:=i-1; End; 'X':If (i > 1) And (St[i-1] = 'I') Then Begin So:=So+9; i:=i-2; End Else Begin So:=So+10; i:=i-1; End; 'L':If (i > 1) And (St[i-1] = 'X') Then Begin

So:=So+50; i:=i-1; End; 'C':If (i > 1) And (St[i-1] = 'X') Then Begin So:=So+90; i:=i-2; End Else Begin So:=So+100; i:=i-1; End; 'D':If (i > 1) And (St[i-1] = 'C') Then Begin So:=So+400; i:=i-2; End Else Begin So:=So+500; i:=i-1; End; 'M':If (i > 1) And (St[i-1] = 'C') Then Begin So:=So+900; i:=i-2; End Else Begin So:=So+1000; i:=i-1; End; End; Writeln('+So La ma : ',St); Writeln('+Doi ra thap phan: ',So); Writeln; Write('-Tiep tuc nua khong (c/k) '); Readln(tiep); If UpCase(tiep)='C' Then Goto l1; End. 30/Kim tra s nhp vo: Code: Program Kiem_tra_so; Label tt; Var St:String; So:Real;

Else Begin

So:=So+40; i:=i-2; End

Dung:Integer; tiep:Char; Begin Repeat Writeln('KIEM TRA SO NHAP VAO'); Writeln(' -----------'); tt:Write('-Nhap mot so: '); Readln(St); Val(St,So,Dung); If Dung = 0 Then Writeln(' +Ban da nhap mot so: ',So:8:2) Else Writeln(' +Khong phai so, xin nhap lai:'); Until Dung = 0; Writeln; Write('-Co tiep tuc khong (C/K) '); Readln(Tiep); If UpCase(Tiep)='C' Then Goto tt; End. 31/Chung trnh m ha: Code: Program Ma_hoa; Var St:String; k:Integer; i,n:Integer; Begin Writeln('CHUONG TRINH MA HOA'); Writeln(' -----------'); Write('-Nhap chuoi: '); Readln(St); Write('-Nhap ma so k: '); Readln(k); k:=k Mod 26; For i:= 1 To Length(St) Do Begin n:=Ord(St[i]); If (n >=97) And (n<=122) then Begin n:=n+k; If n > 122 Then n:=(n Mod 122) + 96; End; St[i]:=Chr(n); End; Writeln; Writeln('+Sau khi ma hoa: ',St); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 32/Ngt tng t trong cu: Code:

Program Ngat_tu; Var St:String; Begin Writeln('NGAT TUNG TU TRONG CAU'); Writeln(' --------------'); Writeln; Write('-Nhap mot cau: '); Readln(St); Repeat While (St[1] =' ') And (Length(St) <> 0) Do Delete(St,1,1); While (St[1] <> ' ') And (Length(St) <>0) Do Begin Write(St[1]); Delete(St,1,1); End; Writeln; Until Length(St)=0; Readln End. 33/Kim tra ki t trng ca 2 chui: Code: Program Cung_Ky_Tu; Var St1,St2:String; Dung:Boolean; i:Integer; Begin Writeln('KIEM TRA KY TU TRUNG CUA 2 CHUOI'); Writeln(' --------------'); Writeln; Write('-Nhap chuoi 1: '); Readln(St1); Write('-Nhap chuoi 2: '); Readln(St2); Dung:=False; If Length(St1)=Length(St2) Then Begin Dung:=True; For i:= 1 To Length(St1) Do If Pos(St1[i],St2) = 0 Then Dung:=False Else Delete(St2,Pos(St1[i],St2),1); End; If Dung Then Writeln('+Hai chuoi co cung cac ky tu') Else Writeln('+Hai chuoi co cac ky tu khac nhau'); Readln End. 34/Kim tra chui i xng: Code:

Program Chuoi_Doi_Xung; Var St:String; l,i:Integer; Dung:Boolean; Begin Writeln('KIEM TRA CHUOI DOI XUNG'); Writeln(' -------------'); Writeln; Write('-Nhap chuoi: '); Readln(St); l:=Length(St); Dung:=True; For i:=1 To (l Div 2) Do If St[i] <> St[l-i+1] Then Dung:=False; If Dung Then Writeln('+Chuoi nay doi xung') Else Writeln('+Chuoi nay khong doi xung'); Readln End. 35/i s thp phn ra s la m: Code: Program So_La_Ma; Var So,So1,i:Integer; St:String; Begin Writeln('DOI SO THAP PHAN SANG SO LA MA'); Writeln(' ------------'); Writeln; Write('-Nhap so nguyen: '); Readln(So); So1:=So; St:=' '; For i:=1 To (so Div 1000) Do St:=St+'M'; So:=So Mod 1000; If So >= 900 Then Begin St:=St+'CM'; So:=So-900; End Else If So >=500 Then Begin St:=St+'I'; So:=So-500; End Else If So >=400 Then Begin St:=St+'CD';

So:=So-400; End; For i:=1 To (so Div 100) Do St:=St+'C'; So:=So Mod 100; If So >= 90 Then Begin St:=St+'XC'; So:=So-90; End Else If So >=50 Then Begin St:=St+'L'; So:=So-50; End Else If So >=40 Then Begin St:=St+'XL'; So:=So-40; End; For i:=1 To (so Div 10) Do St:=St+'X'; So:=So Mod 10; If So >= 9 Then Begin St:=St+'IX'; So:=So-9; End Else If So >=5 Then Begin St:=St+'V'; So:=So-5; End Else If So >=4 Then Begin St:=St+'IV'; So:=So-4; End; For i:=1 To So Do St:=St+'I'; Writeln; Writeln('+So thap phan: ',So1); Writeln('+So La ma : ',St); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 36/Mng s thc: Code: Program Mang_so_thuc;

Const Max = 100; Type Mang=Array[1..Max] Of Real; Var i,n:Integer; A:mang; Begin Writeln('MANG SO THUC'); Writeln('------------'); Repeat Write('-Cho biet so phan tu: '); Readln(N); Until N <= Max; For i:=1 To N Do Begin Write('+Phan tu thu: ',i,' = '); Readln(a[i]); End; Writeln; Writeln('IN THEO THU TU NGUOC'); Writeln('--------------------'); Writeln; For i:=N Downto 1 Do Write(a[i]:4:1,' '); Writeln; Writeln; Writeln('IN CAC DOI SO CUA CAC PHAN TU MANG'); Writeln('----------------------------------'); Writeln; For i:=1 To N Do Write(a[i]:4:1,' '); Writeln; Readln End. 37/Tng tch ma trn: Code: Program Tong_Tich_Ma_tran; Uses Crt; Type Matran=array[1..3,1..3] Of Integer; Var a,b,c,d:Matran; i,j,k:Byte; Ch:Char; {*****************************} Procedure Nhap(Var m:Matran; Ten:Char); Begin ClrScr; GotoXY(26,6); Write('-Nhap ma tran: ',Ten); For i:=1 To 3 Do For j:=1 to 3 Do

End; {*****************************} Procedure Xuat(m:Matran; Ten:Char); Begin ClrScr; GotoXY(26,6); Write('CAC PHAN TU CUA MA TRAN: ',Ten); For i:=1 To 3 Do For j:=1 To 3 Do Begin GotoXY(20*i-8,10+2*j); Write(Ten,'[',i,',',']= ',m[i,j]); End; End; {*****************************} BEGIN Nhap(a,'A'); Nhap(b,'B'); For i:=1 To 3 Do For j:=1 To 3 Do c[i,j]:=a[i,j]+b[i,j]; Writeln; Writeln('MA TRAN TONG'); Writeln; Xuat(c,'C'); GotoXY(10,25); Write('Bam phim <Esc> de xem ma tran tich'); For i:=1 to 3 Do For j:=1 To 3 Do Begin d[i,j]:=0; For k:=1 To 3 Do d[i,j]:=a[i,k]*b[k,j]+d[i,j]; End; Repeat Ch:=Readkey; If Ch=#0 then Ch:=Readkey; Until Ch=#27; Writeln('MA TRAN TICH= '); Xuat(d,'D'); Repeat Until KeyPressed; END. 38/Sp xp mng tng dn: Code: Program Mang_tang; Const

Begin GotoXY(20*i-8,10+2*j); Write(Ten,'[',i,',',j,']= '); Readln(m[i,j]); End;

Var

Max=10;

a:Array[1..Max] Of Integer; i,j,tam:Integer; Begin Writeln('SAP XEP MANG TANG DAN'); Writeln('---------------------'); Writeln; For i:= 1 To Max Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; For i:=1 to Max-1 Do For j:= i+1 To Max Do Begin If a[i] > a[j] Then Begin tam:=a[i]; a[i]:=a[j]; a[j]:=tam; End; End; Writeln; Writeln('+Mang sau khi sap xep:'); Writeln; For i:=1 To Max Do Write(a[i],' '); Writeln; Readln End. 39/Sp xp mng bng gii thut chn: Code: Program Gt_Chen; Const spt=10; Var a:array[1..spt] Of Integer; i,j,k,tam:Integer; Begin Writeln('SAP XEP MANG BANG GIAI THUAT CHEN'); Writeln('---------------------------------'); Writeln; For i:=1 To spt Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; For i:=2 To spt Do If a[i] < a[i-1] Then Begin j:=1; While a[j] < a[i] Do

j:=j+1; tam:=a[i]; For k:=i Downto j+1 Do a[k]:=a[k-1]; a[j]:=tam; End; Writeln; Writeln('Mang sau khi sap xep:'); For i:=1 To spt Do Write(a[i]:6); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 40/Sp xp mng bng gii thut chn: Code: Program Gt_Chon; Const spt=10; Var a:array[1..spt] Of Integer; min,vitri,i,j:Integer; Begin Writeln('SAP XEP MANG BANG GIAI THUAT CHON'); Writeln('---------------------------------'); Writeln; For i:=1 To spt Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; For i:=1 To spt Do Begin min:=a[spt]; vitri:=spt; For j:=i To spt Do If a[j] < min Then Begin min:=a[j]; vitri:=j; End; a[vitri]:=a[i]; a[i]:=min; End; Writeln; Writeln('Mang sau khi sap xep:'); For i:=1 To spt Do Write(a[i]:6); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End.

41/Sp xp mng bng gii thut ni bt: Code: Program Gt_Noi_bot; Const spt=10; Var a:array[1..spt] Of Integer; i,j,tam:Integer; Begin Writeln('SAP XEP MANG BANG GIAI THUAT NOI BOT'); Writeln('-----------------------------------'); Writeln; For i:=1 To spt Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; For i:=1 To spt-1 Do For j:= spt Downto i+1 Do If a[j] < a[j-1] Then Begin tam:=a[j]; a[j]:=a[j-1]; a[j-1]:=tam; End; Writeln; Writeln('Mang sau khi sap xep:'); For i:=1 To spt Do Write(a[i]:6); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 42/Gii thut tm kim tuyn tnh: Code: Program Tim_Tuyen_Tinh; Const N=10; Var a:array[1..N] Of Integer; so,i:Integer; Begin Writeln('GIAI THUAT TIM KIEM TUYEN TINH'); Writeln('------------------------------'); Writeln; For i:=1 To N Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; Writeln; Write('-So can tim: ');

Readln(so); i:=1; While (i <=N) And (a[i] <> so) Do i:=i+1; If i <= N Then Writeln('+Tim thay o vi tri thu: ',i) Else Writeln('+Khong tim thay'); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 43/Gii thut tm kim nh phn: Code: Program Tim_Nhi_Phan; Const N=10; Var a:array[1..N] Of Integer; so,vt1,vt2,i:Integer; Begin Writeln('GIAI THUAT TIM KIEM NHI PHAN'); Writeln('----------------------------'); Writeln; For i:=1 To N Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; Writeln; Write('-So can tim: '); Readln(so); vt1:=1; vt2:=n; While vt2 >= vt1 Do Begin i:=Trunc((vt1+vt2) Div 2); If so > a[i] Then vt1:=i+1 Else If so < a[i] Then vt2:=i-1 Else vt2:=-1; End; If vt2 = -1 Then Writeln('+Tim thay o vi tri thu: ',i) Else Writeln('+Khong tim thay'); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End.

44/Xa b cc s trng nhau: Code: Program Bo_so_trung; Const Max=100; Var a:Array[1..Max] Of Integer; i,j,k,n:Integer; Begin Writeln('XOA BO CAC SO TRUNG NHAU'); Writeln('------------------------'); Writeln; Write('-Nhap so phan tu mang: '); Readln(n); For i:=1 To N Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; i:=2; While i <= N Do Begin j:=1; While a[j] <> a[i] Do j:=j+1; If j < i Then Begin For k:=i to n-1 Do a[k]:= a[k+1]; n:=n-1; End Else i:=i+1; End; Writeln; Write('-Mang con lai: '); For i:=1 to n Do Write(a[i]:8); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 45/Dy con: Code: Program Day_con; Const k=10; a:Array[1..k] Of Integer=(1,3,2,8,10,12,7,29,6,3); Var i:Integer; vt,max:Integer; n,tong:Integer; Begin

Vt:=1; max:=a[1]; n:=1; tong:=a[1]; For i:=2 To k Do Begin If (a[i] > a[i-1]) Then tong:=tong+a[i]; If (a[i] < a[i-1]) Or (i=k) Then Begin If tong > max Then Begin max:=tong; vt:=n; End; n:=i; tong:=a[i]; End; End; Writeln('-Day con la: '); i:=vt; Repeat Write(a[i]:6); max:=max-a[i]; i:=i+1; Until max=0; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 46/Ch hoa: Code: Program Chu_hoa; Uses Crt; Const a:Array[1..10] Of String[24]=('nguyen trung truc','dinh tien hoang', 'nguyen cong tru','le thanh ton','le loi','le lai','tran hung dao', 'nguyen hue','chu van an','mac dinh chi'); Var k,j:Byte; {-------------------------} Procedure ChuHoa(x,y:Byte; a:String); Var k:Byte; Begin For k:=1 To length(a) Do If (k=1) Or ((a[k-1]=' ') And (a[k]<>' ')) Then Begin GotoXY(x+k-1,y); Write(UpCase(a[k])); End;

End; Begin ClrScr; For k:=1 To 10 Do Begin GotoXY(5,k); Write(a[k]:-24); ChuHoa(5,k,a[k]) End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 47/Tam gic Pascal: Code: Program Tg_Pascal; Const n=10; Var a:Array[1..n, 1..n] Of Integer; i,j:Integer; Begin Writeln('TAM GIAC PASCAL'); Writeln('---------------'); Writeln; For i:=1 To n Do a[i,1]:=1; For j:=1 To n Do a[1,j]:=0; For i:=2 To n Do For j:=2 To n Do a[i,j]:=a[i-1,j-1]+a[i-1,j]; For i:=1 To n Do Begin For j:=1 To i Do Write(a[i,j]:4); Writeln; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 48/Phn tch s nguyn dung nh nht: Code: Program Phan_tich; Const n=15; Var a:Array[1..n, 1..n] Of Longint; i,j,i1,j1:Integer; Begin Writeln('PHAN TICH SO NGUYEN DUONG NHO NHAT');

Writeln('----------------------------------'); Writeln; For i:=1 To n Do For j:=1 To n Do a[i,j]:=i*i*i + j*j*j; Writeln; Writeln('IN KET QUA'); Writeln('----------'); For i:=1 To n Do For j:=1 To i Do Begin For i1:= i+1 To n Do For j1:=1 To j-1 Do If a[i,j]=a[i1,j1] Then Writeln(a[i,j],' = ',i,' ^3 ',' + ',j,' ^3 ',' = ', i1,' ^3 ',' + ',j1,' ^3'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. 49/Bng cu chung: Code: Program Cuu_Chuong; Uses Crt; Type cc1=Array[1..5, 1..10] Of Byte; cc2=Array[6..10, 1..10] Of Byte; Var i,j:Byte; Procedure In1; Var a:cc1; cot,hang:Byte; Begin cot:=1; hang:=3; For i:=1 To 5 Do For j:=1 To 10 Do Begin GotoXY(cot,hang); a[i,j]:=i * j; TextColor(Yellow); Writeln(i:2,' lan ',j:2,' =',a[i,j]:3,'|'); hang:=hang+1; If hang > 12 Then Begin hang:=3; cot:=cot+15; End; End; End;

Procedure In2; Var a:cc2; cot,hang:Byte; Begin cot:=1; hang:=14; For i:=6 To 10 Do For j:=1 To 10 Do Begin GotoXY(cot,hang); a[i,j]:=i * j; Textcolor(LightMagenta); Writeln(i:2,' lan ',j:2,' =',a[i,j]:3,'|'); hang:=hang+1; If hang > 23 Then Begin hang:=14; cot:=cot+15; End; End; End; BEGIN ClrScr; Textcolor(Cyan); Writeln(' BANG CUU CHUONG'); Writeln(' ---------------'); In1; Textcolor(LightBlue); Writeln(' -------------------------------------------'); In2; Textcolor(LightGreen); Writeln(' Bam phim <Enter> de ket thuc'); Readln END. 50/Tm 2 phn t lin tip trong bng X: Code: Program Tim_PT_Mang; Uses Crt; Var a:Array[1..1000] Of Integer; {----------------------------} Procedure Tao; Var k:Integer; Begin Randomize; For k:=1 To 100 Do a[k]:=Random(100); End; {----------------------------}

Procedure Tim; Var k,x:Integer; Begin Write('-Nhap gia tri X= '); Readln(x); For k:=1 To 999 Do Begin If a[k] +a[k+1] = X Then Writeln('a[',K,'] + a[',K+1,']= ',X) Else Writeln('Khong co 2 phan tu nao bang: ',X); End; End; BEGIN Writeln('TIM 2 PHAN TU LIEN TIEP BANG GIA TRI X'); Writeln('-------------------------------------'); Writeln; Tao; Tim; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln; END. Khch Ving Thm xem cc bi vit ny cha?: Bi 12: KIU XU Bi 11: KIU MNG Th Vin Cc Dng Bi Tp Pascal ca Tin Hc... Th Vin Cc Dng Bi Tp Pascal ca Tin Hc... Bi 9: Cu trc r nhnh Gii Bi Tp Tin Hoc 11 trong SGK Trang... Th Vin Cc Dng Bi Tp Pascal ca Tin Hc... Bi 4: MT S KIU D LIU CHUN Th Vin Cc Dng Bi Tp Pascal ca Tin Hc... Th Vin Cc Dng Bi Tp Pascal ca Tin Hc...

Ch kca ElgoogAdmin

Hc...hc na...hc mi... ui ngh... Nn n...Hc li ^^ Tiu s c Trn Ph Mt vi nt v lch s trng THPT Trn Ph Nng Tiu s trng THPT Trn Ph Nng - t thi cn l trng Sao Mai Tiu s trng THPT Trn Ph Nng - t thi cn l trng Sao Mai( Phn 2: b sung giai on 1959 1975) Gi vit th UPU ln th 40 Gi bi vit th Quc t UPU 41

Pht ng cuc thi vit th upu ln th 40 Th l cuc thi vit th upu quc t ln th 40- nm 2011 Ti sn ca Elgoog

Elgoog Xem h s Gi nhn tin ti Elgoog Ti trang web ca Elgoog Tm bi gi bi Elgoog Kt i vi ElgoogAdmin

c truyn tranh online

Kin thc Y hc

Ti liu min ph

#2

28-11-2010, 10:47 PM
User Profile ElgoogAdmin Administrator H & Tn: Hunh i ang hc lp : * ra trng . Nin kha : 2002 - 2005 Total Awards: 8 Tham gia: Oct 2009 Ni C Ng: 127.0.0.1 Point: 2,126,826 Tng s bi gi: 3,530 cm n: 159 bi vit c cm n 641 ln trong 181 bi

51/SX Nh Phn: Code: Program SX_Nhi_Phan; Uses Crt; Const Pt=240; Type Mang=Array[1..Pt] Of Integer; Var a:Mang; n:Integer; {---------------------------------} Procedure Sort(Var a: Mang; n:Integer); Var k,j,dau,cuoi,giua,tam:Integer; Begin For k:=2 To n Do Begin tam:=a[k]; cuoi:=1; dau:=k-1; While cuoi <= dau Do Begin giua:=(dau+cuoi) Div 2; If tam < a[giua] Then dau:=giua-1 Else cuoi:=giua+1; End; For j:=k-1 Downto cuoi Do a[j+1]:=a[j]; a[cuoi]:=tam End End; {---------------------------------} BEGIN ClrScr; Randomize; For n:=1 To Pt Do a[n]:=Random(1000); Sort(a,Pt); For n:=1 To Pt Do Write(' ',a[n]:6,' '); Readln END. 52/Kim tra ngy thng: Code: Program KT_ngay; CONST Ngay = [1..31]; Thang = [1..12]; Th31ngay: Set of byte = [1,3,5,7,8,10,12];

BaoLoi : Array[1..3] Of String[30] =('-Ban nhap sai ngay, thang', '-Thang nay khong co ngay 31','-thang 2 khong co ngay nay'); TYPE NgayThang = RECORD Ng, Th : Byte; Nam : Word; End; Nhatky : NgayThang; Loi : Array[1..3] Of Boolean; i : Byte; Nhuan : Boolean;

VAR

BEGIN With Nhatky Do Begin Write('-Nhap ngay = '); Readln(Ng); Write('-Nhap thang= '); Readln(Th); Write('-Nhap nam = '); Readln(Nam); Loi[1] := (NOT(Ng In Ngay)) OR (NOT (Th In Thang)); Loi[2] := (Ng = 31) AND (NOT (Th In Th31Ngay)); Nhuan := ((Nam Mod 4) = 0) AND ((Nam Mod 100) <> 0) OR ((Nam Mod 400) = 0); Loi[3] := ((Ng > 29) AND (Th = 2)) OR ((Ng = 29) AND (th = 2) AND (NOT Nhuan)); End; For i := 1 To 3 Do If Loi[i] Then Writeln(BaoLoi[i]); Readln END. 53/im Vn Ton L: Code: Program Van_Toan_Ly; CONST Max = 50; Td1='|------------------------|-----|-----|------|'; Td2=#124 +' HO VA TEN ' + #124 + ' VAN ' + #124+ 'TOAN ' + #124 + ' LY |'; TYPE HocSinh = RECORD HoTen : String[24]; Van,Toan,Ly : Real; End; VAR Hs : Array[1..Max] Of HocSinh;

i,n : 1..Max; BEGIN Writeln('NHAP XUAT DU LIEU KIEU BAN GHI'); Writeln('------------------------------'); Writeln; Write('-Lop co bao nhieu hoc sinh: '); Readln(n); For i := 1 To N Do {Nhap du lieu} With Hs[i] Do Begin Write('-Ho ten hoc sinh thu: ',i:2,' = '); Readln(HoTen); Write('-Diem Van : '); Readln(Van); Write('-Diem Toan: '); Readln(Toan); Write('-Diem Ly : '); Readln(Ly); End; Writeln; Writeln(' BANG DIEM'); Writeln; Writeln(Td1); Writeln(Td2); Writeln(Td1); For i := 1 To N Do {Xuat du lieu } With Hs[i] Do Writeln(#124,HoTen,#32:24 - Length(HoTen), #124,Van :5:1, #124,Toan :5:1, #124,Ly :5:1,' |'); Writeln(Td1); Readln END. 54/Sp xp tui gim: Code: Program Sap_Xep_Tuoi_Giam; CONST Max = 50; Td1 = '|========================|============|'; Td2 = #124+' HO VA TEN '+#124 + ' NAM SINH Td3 = '|------------------------|------------|'; TYPE HoSo = RECORD HoTen : String[24]; Ngay : 1..31; Thang : 1..12; Nam : 1900..2000; End; VAR Nhanvien :Array[1..Max] Of HoSo; i,n : 1..Max;

|';

Tam : HoSo; Kthuc: Boolean; BEGIN Writeln('SAP XEP BAN GHI THEO GIAI THUAT NOI BOT'); Writeln('---------------------------------------'); Writeln; Write('-Co bao nhieu nguoi: '); Readln(n); For i := 1 to N Do { Nhap du lieu } With Nhanvien[i] Do Begin Write('-Ho va ten nguoi thu: ',i:2,' = '); Readln(HoTen); Write('-Ngay sinh: '); Readln(Ngay); Write('-Thang : '); Readln(Thang); Write('-Nam : '); Readln(Nam); End; Repeat { Sap xep ban ghi} KThuc := True; For i := 1 To N - 1 Do If (Nhanvien[i].Nam > Nhanvien[i+1].Nam) OR ((Nhanvien[i].Nam = Nhanvien[i+1].Nam) AND (Nhanvien[i].Thang > Nhanvien[i+1].Thang)) OR ((Nhanvien[i].Nam = Nhanvien[i+1].Nam) AND (Nhanvien[i].Thang = Nhanvien[i+1].Thang) AND (Nhanvien[i].Ngay > Nhanvien[i+1].Ngay)) Then Begin Tam:=Nhanvien[i]; Nhanvien[i] := Nhanvien[i+1]; Nhanvien[i+1] := Tam; KThuc :=False; End; Until KThuc; Writeln; Writeln(' SAP XEP THEO TUOI'); Writeln; Writeln(Td1); Writeln(Td2); Writeln(Td3); For i := 1 to N Do With Nhanvien[i] Do Writeln(#124, HoTen, #32 :24 - Length(HoTen), #124,Ngay,' / ',Thang,' / ',nam, #124); Writeln(Td1); Readln END. 55/Cu hi trc nghim: Code: Program Trac_Nghiem;

TYPE

Tracnghiem = RECORD CauHoi : String; A,B,C,D : String; DapAn : Char; End; a:Array[1..5] Of Tracnghiem; i,dung : Integer; Traloi : Char;

VAR

BEGIN Writeln('CAU HOI TRAC NGHIEM'); Writeln('-------------------'); Writeln; Writeln('-Nhap 5 cau hoi,y nghia va dap an'); For i := 1 To 5 Do With a[i] Do Begin Write('-Cau hoi thu: ',i:2,' : '); Readln(CauHoi); Write(' +Nghia A: '); Readln(A); Write(' +Nghia B: '); Readln(B); Write(' +Nghia C: '); Readln(C); Write(' +Nghia D: '); Readln(D); Write('-Dap an: '); Readln(DapAn); DapAn := UpCase(DapAn); End; Dung := 0; Writeln('-Ban chon nghia cho tung cau hoi'); For i := 1 To 5 Do Begin Writeln(i,'. ',a[i].CauHoi); Writeln(' A)',a[i].A); Writeln(' B)',a[i].B); Writeln(' C)',a[i].C); Writeln(' D)',a[i].D); Write('-Lua cau nao go vao nghia cua cau do: '); Readln(TraLoi); If UpCase(TraLoi) = a[i].DapAn Then Dung := Dung + 1; End; Writeln; Writeln('-So cau tra loi dung: ',Dung); Readln END. 56/T in:

Code: Program Tu_dien; TYPE Tudien = RECORD Anh,Viet : String; End; VAR a: Array[1..5] Of TuDien; St : String; i : Integer; TimDuoc : Boolean; BEGIN For i := 1 To 5 Do Begin Writeln('-Tu thu: ',i); Write(' +Nghia tieng Anh : '); Readln(a[i].Anh); Write(' +Nghia tieng Viet : '); Readln(a[i].Viet); End; Writeln; Write('*Tu tieng Anh can tim: '); Readln(St); TimDuoc :=False; i := 1; While (NOT TimDuoc) AND (i <= 5) Do Begin If St = a[i].Anh Then Begin Write('*Nghia tieng Viet : ',a[i].Viet); TimDuoc := True; End; i := i + 1; End; If NOT TimDuoc then Writeln('Tu nay khong co trong tu dien'); Readln END. 57/Thnh tch ca i bng : Code: Program TT_Doi_Bong; CONST Max = 23; TYPE ThanhTich=RECORD HoTen:String[24]; Tuoi,BanThang:Integer; END; DoiBong = Array[1..Max] Of ThanhTich; VAR i,n,TuoiCao,TuoiThap,nam:Integer;

Ten1,Ten2,TenDoi:String[20]; CauThu:DoiBong; ThangNhieu,ThangIt:Integer; Tb:Real; BEGIN Writeln('THANH TICH CUA DOI BONG DA'); Writeln('--------------------------'); Write('-Thanh tich nam nao: '); Readln(Nam); Write('-Ten doi bong: '); Readln(TenDoi); Write('-So cau thu: '); Readln(n); For i:=1 To n Do With Cauthu[i] Do Begin Write('-Ho va ten cau thu thu: ',i:2,' la: '); Readln(HoTen); Write('-Tuoi cua cau thu thu: ',i:2,' la: '); Readln(Tuoi); Write('-So ban thang cua cau thu thu: ',i:2,' la: '); Readln(BanThang); End; TuoiCao:=CauThu[1].Tuoi; Tuoithap:=CauThu[1].Tuoi; ThangNhieu:=Cauthu[1].Banthang; ThangIt:=CauThu[1].BanThang; Ten1:=CauThu[1].HoTen; Ten2:=CauThu[1].HoTen; Tb:=CauThu[1].BanThang; For i:=2 To n Do Begin If CauThu[i].Tuoi > TuoiCao Then TuoiCao:=CauThu[i].Tuoi Else If CauThu[i].Tuoi < TuoiThap Then Tuoithap :=CauThu[i].Tuoi; If CauThu[i].BanThang > ThangNhieu Then Begin ThangNhieu:=Cauthu[i].BanThang; Ten1:=CauThu[i].HoTen; End Else If CauThu[i].BanThang < ThangIt Then Begin ThangIt:= CauThu[i].BanThang; Ten2:=CauThu[i].HoTen; End; Tb:=Tb+CauThu[i].BanThang; End; Writeln; Writeln('THANH TICH NAM: ',nam); Writeln('Cua doi bong: ',TenDoi); Writeln('-----------------------');

Writeln; Writeln('-Cau thu: ',Ten1,' co tuoi lon nhat: ',TuoiCao); Writeln('-Cau thu: ',Ten2,' co tuoi nho nhat: ',TuoiThap); Writeln; Writeln('-Cau thu: ',Ten1,' Co ban thang nhieu nhat: ',ThangNhieu); Writeln('-Cau thu: ',Ten2,' Co ban thang it nhat: ',ThangIt); Writeln; Writeln('-So ban thang trung binh cua toan doi: ',Round(Tb/n)); Readln END. 58/Nhp xut s hu t: Code: Program So_Huu_Ty; TYPE HuuTy = RECORD TuSo, MauSo : Integer; End; VAR So1, So2, Kq : HuuTy; St1, St2 : String; i,Result, n, m : Integer; Ch : Char;

BEGIN Writeln('NHAP, XUAT SO HUU TY'); Writeln('--------------------'); Writeln; Write('-So thu nhat: '); Readln(St1); Write('-So thu hai : '); Readln(St2); i := Pos('/', St1); With so1 Do If i = 0 Then Begin Val(St1, TuSo, Result); MauSo := 1; End Else Begin Val(Copy(St1, 1, i-1), TuSo, Result); Val(Copy(St1, i+1, Length(St1)-i), MauSo, Result); End; i := Pos('/', St2); With So2 Do If i = 0 Then Begin Val(St2, TuSo, Result); MauSo := 1; End Else Begin

Val(Copy(St2, 1, i-1), TuSo, Result); Val(Copy(St2, i+1, Length(St2)-i), MauSo, Result); End; Write('Chon phep tinh (+, -, *, /): '); Readln(Ch); Case Ch Of '+' : Begin Kq.TuSo := So1.TuSo*So2.MauSo + So1.MauSo * So2.TuSo; Kq.MauSo := So1.MauSo * So2.MauSo; End; '-' : Begin Kq.TuSo := So1.TuSo*So2.MauSo - So1.MauSo * So2.TuSo; Kq.MauSo := So1.MauSo * So2.MauSo; End; '*' : Begin Kq.TuSo := So1.TuSo*So2.TuSo; Kq.MauSo := So1.MauSo * So2.MauSo; End; '/' : Begin Kq.TuSo := So1.TuSo*So2.MauSo; Kq.MauSo := So1.MauSo * So2.TuSo; End; End; If Kq.TuSo = 0 Then Write('Ket qua : 0') Else With Kq Do Begin n := ABS(TuSo); m := ABS(MauSo); While n <> m Do If n > m Then n := n-m Else m := m-n; TuSo :=TuSo Div n; MauSo := MauSo Div n; If MauSo = 1 Then Write('Ket qua : ',TuSo) Else Write('Ket qua : ',TuSo,'/',MauSo); End; Readln END. 59/Sp xp theo tn: Code: Program Sap_Xep_Theo_Ten; TYPE HoSo = RECORD HoLot : String[17]; Ten : String[7]; Diem : Real; End;

VAR a : Array[1..50] Of HoSo; Tam : HoSo; i,j,PhanTu : Integer; BEGIN PhanTu := 0; With Tam Do Repeat Write('-Nhap ho lot ( 0 de ket thu): '); Readln(HoLot); If HoLot <> '0' Then Begin Write('-Nhap ten : '); Readln(Ten); Write('-Nhap diem : '); Readln(Diem); PhanTu := PhanTu + 1; a[PhanTu] := Tam; End; Until HoLot = '0'; For i := 1 To PhanTu - 1 Do For j := PhanTu DownTo i+1 Do If a[j].Ten[1] < a[j-1].Ten[1] Then Begin Tam := a[j]; a[j] := a[j-1]; a[j-1] := Tam; End; Writeln; Writeln('------------------------------------'); Writeln('| HO VA TEN | DIEM |'); Writeln('|--------------------------|-------|'); For i := 1 To PhanTu Do With a[i] Do Writeln('|',HoLot:17,' ',Ten:7,' |',Diem:5:1,' Writeln('------------------------------------'); Readln END. 60/Ha n bn hng: Code: Program Hoa_Don; CONST Max = 100; TYPE HoaDon = RECORD NguoiMua : String[24]; TenHang : String[10]; DonGia : Real; SoLuong : Integer; End;

|');

VAR a : Array[1..Max] Of HoaDon; DsTenHang : Array[1..Max] Of String[10]; Tam : HoaDon; Spt, SoTenHang, i, j : Integer; Tong : Real; KiemTra : Boolean; BEGIN Writeln('HOA DON BAN HANG'); Writeln('----------------'); Writeln; Spt := 0; With Tam do Repeat Write('-Ten nguoi mua (go 0 de thoat): '); Readln(NguoiMua); If NguoiMua <> '0' Then Begin Write('-Ten hang: '); Readln(TenHang); Write('-Don gia : '); Readln(DonGia); Write('-So luong: '); Readln(SoLuong); Spt := Spt + 1; a[Spt] := Tam; End; Until NguoiMua = '0'; SoTenHang := 0; For i := 1 To Spt Do Begin KiemTra :=False; For j := 1 To SoTenHang Do If DsTenHang[j] = a[i].TenHang Then KiemTra := True; If NOT KiemTra Then Begin SoTenHang :=SoTenHang + 1; DsTenHang[SoTenHang] := a[i].TenHang; End; End; Writeln; For i := 1 To SoTenHang Do Begin Tong := 0; For j := 1 To Spt Do With a[j] Do If TenHang = DsTenHang[i] Then Tong := Tong + (DonGia * Soluong); Writeln(' +Tong so tien mua: ',DsTenHang[i]:10,' = ',tong:10:2); End;

Readln END.

61/Tnh th tch lng g: Code: Program The_Tich_Long_Go; TYPE CachDo = (DuongKinh, ChuVi); LongGo = RECORD Cdai : Real; Dscdai : Real; Case Cdo : CachDo Of DuongKinh : (Dk,Dsdk : Real); ChuVi : (Cvi, Dscvi : Real); End; VAR MaDo :Char; Go : LongGo; Ttich : Real; {------------------------} Function TheTich(A: LongGo): Real; Begin With A Do Case Cdo Of DuongKinh : TheTich := Pi*Sqr(Dk-Dsdk)*(Cdai-Dscdai)/40000; ChuVi : TheTich := Sqr(Cvi-Dscvi)*(Cdai-Dscdai)/(Pi*40000); End; End; BEGIN Writeln('TINH THE TICH LONG GO'); Writeln('---------------------'); Writeln; Repeat Writeln('*Chon phuong phap do ?'); Write('+Duong kinh (go K), +Chu vi (go V): '); Readln(Mado); Until Pos(Mado,'kKvV') <> 0; With Go Do Begin Write('-Chieu dai (m) = '); Readln(Cdai); Write('-Dung sai (m) = '); Readln(Dscdai); Case Mado Of 'k','K' : Begin Cdo := DuongKinh; Write('+Duong kinh (Cm): '); Readln(Dk); Write('+Dung sai (Cm) : '); Readln(Dsdk);

End; 'v','V' : Begin Cdo := Chuvi; Write('+Chu vi (Cm) Readln(Cvi); Write('+Dung sai (Cm) Readln(Dscvi); End;

: '); : ');

End; End; Ttich :=TheTich(Go); Writeln; Writeln('*The tich long go la: ',Ttich:10:4,' m3'); Writeln; Writeln('Bam phim <Enter> de ket thuc'); Readln END. 62/H s gia cnh: Code: Program Gia_Canh; CONST Max = 100; Td1 ='|========================|========================|======|'; Td2 =#124 +' HO VA TEN '+ #124 +' HO TEN VO CHONG '+ #124 +'SO CON'+#124; Td3 ='|------------------------|------------------------|------|'; TYPE GiaCanh = RECORD HoTen :String[24]; Case GiaDinh : Boolean Of True : (VoChong : String[24]; SoCon : Byte); End; VAR Hsgc :Array[1..Max] Of GiaCanh; n, i : 1..Max; Ch : Char; BEGIN Writeln('HO SO GIA CANH'); Writeln('--------------'); Writeln; Write('-So luong nhan vien: '); Readln(n); For i := 1 To N Do {Nhap du lieu} With Hsgc[i] Do Begin Write('+Ho va ten nhan vien thu: ',i:2,' la= '); Readln(HoTen); Write('+Co gia dinh chua (C/K) '); Readln(Ch); Ch := UpCase(Ch);

If Ch = 'C' Then Begin GiaDinh := True; Write(' +Ho ten vo/chong: '); Readln(VoChong); Write(' +So con : '); Readln(SoCon); End Else GiaDinh := False; End; Writeln; Writeln(#32:25,'HOAN CANH GIA DINH NHAN VIEN'); Writeln(#32:12,Td1); Writeln(#32:12,Td2); Writeln(#32:12,Td3); For i := 1 To N Do {Xuat du lieu } With Hsgc[i] Do Begin Write(#32:12); Write(#124,HoTen,#32:24-Length(HoTen)); If GiaDinh Then Begin Write(#124,VoChong,#32:24-Length(VoChong)); Writeln(#124,SoCon:6,#124); End Else Begin Write(#124,#32:24); Writeln(#124,#32:6,#124); End; End; Writeln(#32:12,Td1); Readln END. 63/H s nhn vin: Code: Program Ho_So; CONST Max = 100; TYPE Str = String[24]; HoSo = RECORD HoTen : Str; Tuoi : Integer; Luong : Real; End; CongTy = Array[1..Max] Of HoSo; VAR Hoten1, Hoten2 : Str; i,n,TuoiMax,TuoiMin : Integer; LuongMax, LuongMin,LuongTb : Real; Nv : CongTy;

Begin Writeln('HO SO NHAN VIEN'); Writeln('---------------'); Writeln; Write('-Co bao nhieu nguoi: '); Readln(n); For i := 1 To N Do With Nv[i] Do Begin Write('-Ho ten nhan vien thu: ',i:2,' la= '); Readln(HoTen); Write('-Tuoi = '); Readln(Tuoi); Write('-Bac luong = '); Readln(Luong); End; TuoiMax := Nv[1].Tuoi; TuoiMin := Nv[1].Tuoi; LuongMax := Nv[1].Luong; LuongMin := Nv[1].Luong; HoTen1 := Nv[1].HoTen; HoTen2 := Nv[1].HoTen; LuongTb := Nv[1].Luong; For i := 2 To N Do Begin If Nv[i].Tuoi > TuoiMax Then TuoiMax := Nv[i].Tuoi Else If Nv[i].Tuoi < TuoiMin Then TuoiMin := Nv[i].Tuoi; If Nv[i].Luong > LuongMax Then Begin LuongMax := Nv[i].Luong; HoTen1 := Nv[i].HoTen; End Else If Nv[i].Luong < LuongMin Then Begin LuongMin := Nv[i].Luong; HoTen2 := Nv[i].HoTen; End; LuongTb := LuongTb + Nv[i].Luong; End; Writeln; Writeln('+Nhan vien co tuoi lon nhat la: ',TuoiMax); Writeln('+Nhan vien co tuoi nho nhat la: ',TuoiMin); Writeln('+Nhan vien: ',HoTen1,' co bac luong lon nhat: ',LuongMax:10:2); Writeln('+Nhan vien: ',HoTen2,' co bac luong nho nhat: ',LuongMin:10:2); Writeln('+Bac luong trung binh cua toan Cong Ty : ',LuongTb/n:10:2); Readln End. 64/Qun l sch ca th vin: Code:

Program Thu_vien; CONST Max = 100; TYPE ThuVien = RECORD TenSach : String[30]; TacGia : String[24]; NamXb : 1900..1999; NguoiMuon : String[24]; End; VAR Sach : Array[1..Max] Of ThuVien; i, n, x : Integer; Begin Writeln('QUAN LY SACH CUA THU VIEN'); Writeln('-------------------------'); Write('-So luong sach: '); Readln(n); For i := 1 To N Do With Sach[i] Do Begin Write('+Ten sach : '); Readln(TenSach); Write('+Tac gia : '); Readln(TacGia); Write('+Nam Xuat ban : '); Readln(NamXb); Write('+Nguoi muon (Neu khong co ai muon thi bam <Enter>: '); Readln(NguoiMuon); End; Writeln; x := 0; For i := 1 To N Do With Sach[i] Do Begin Writeln('-Ten sach: ',TenSach); Writeln(' +Tac gia : ',TacGia); Writeln(' +Nam xuat ban : ',NamXb); If NguoiMuon <> ' ' Then Begin Writeln(' +Nguoi muon : ',NguoiMuon); x := x + 1; End; End; Writeln; Writeln('+So sach da cho muon: ',x,' quyen'); Readln End. 65/Sp xp im tng dn: Code: Program Sap_Xep_Diem_Tang; TYPE Lop = RECORD

HoTen NamSinh DiemTb End; VAR

: String[24]; : Integer; : Real;

Hs : Array[1..50] Of lop; i,j,n : Integer; Tam : Lop; Begin Writeln('SAP XEP DIEM TANG DAN);'); Writeln('Giai thuat noi Buble'); Writeln('--------------------'); Writeln; Write('-So hoc sinh: '); Readln(n); For i := 1 To N Do With Hs[i] Do Begin Write('+Ho ten hoc sinh thu: ',i:2,' la: '); Readln(Hoten); Write('+Nam sinh: '); Readln(NamSinh); Write('+Diem trung binh: '); Readln(DiemTb); End; For i := 1 To N-1 Do For j := 1 To N-i Do If Hs[j].DiemTb > Hs[j+1].DiemTb Then Begin Tam := Hs[j]; Hs[j] := Hs[j+1]; Hs[j+1] := Tam; End; Writeln; Writeln(' DANH SACH SAP XEP'); Writeln; For i := 1 To N Do With Hs[i] Do Writeln('-',HoTen:24,' :',Namsinh:4,' , ',DiemTb:5:2); Readln End. 66/Tnh im v xp hng: Code: Program Tinh_Diem_Xep_Hang; TYPE Lop = RECORD HoTen : String[24]; NamSinh : Integer; Tb1,Tb2,Tb : Real; End; VAR Hs : Array[1..50] Of lop; i,j,n,Hang: Integer;

Tam : Lop; Begin Writeln('TINH DIEM VA XEP HANG);'); Writeln('Giai thuat noi Buble'); Writeln('--------------------'); Writeln; Write('-So hoc sinh: '); Readln(n); For i := 1 To N Do With Hs[i] Do Begin Write(' +Ho ten hoc sinh thu: ',i:2,' la: '); Readln(Hoten); Write(' +Nam sinh: '); Readln(NamSinh); Write(' +Diem trung binh hoc ky 1: '); Readln(Tb1); Write(' +Diem trung binh hoc ky 2: '); Readln(Tb2); Tb :=(Tb1 + Tb2)/2; Writeln; End; For i := 1 To N-1 Do For j := 1 To N-i Do If Hs[j].Tb < Hs[j+1].Tb Then Begin Tam := Hs[j]; Hs[j] := Hs[j+1]; Hs[j+1] := Tam; End; Writeln; Writeln(' DANH SACH XEP HANG'); Writeln; Hang := 1; For i := 1 To N Do Begin If (i > 1) And (Hs[i].Tb <> Hs[i-1].Tb) Then Hang := i; Writeln(' .Hoc sinh : ',Hs[i].HoTen); Writeln(' .Nam sinh : ',Hs[i].NamSinh); Writeln(' .Diem trung binh ca nam : ',Hs[i].Tb:5:2); Writeln(' .Xep hang ca nam : ',Hang); End; Readln End. 67/Kho st 2 ng trn: Code: Program Khao_Sat_Hai_Duong_Tron; TYPE DuongTron = RECORD R : Real; x, y : Real; End;

VAR

Dt1, Dt2 : DuongTron; Kc, Tong, Hieu : Real;

BEGIN Writeln('KHAO SAT 2 DUONG TRON'); Writeln('---------------------'); Writeln; Writeln('*Duong tron thu nhat'); Write(' +Ban kinh: '); Readln(Dt1.R); Write(' +Toa do x: '); Readln(Dt1.x); Write(' +Toa do y: '); Readln(Dt1.y); writeln; Writeln('*Duong tron thu hai'); Write(' +Ban kinh: '); Readln(Dt2.R); Write(' +Toa do x: '); Readln(Dt2.x); Write(' +Toa do y: '); Readln(Dt2.y); Kc := Sqrt(Sqr(Dt1.x - Dt2.x) + Sqr(Dt1.y - Dt2.y)); Tong := Dt1.R + Dt2.R; Hieu := ABS(Dt1.R - Dt2.R); If (Kc = 0) AND (Hieu = 0) Then Writeln('-Hai duong tron trung nhau') Else If (Hieu > Kc) Then Writeln('-Hai duong tron long nhau') Else If (Tong = Kc) OR (Hieu = Kc) Then Writeln('-Hai duong tron tiep xuc nhau') Else If (Tong > Kc) AND (Hieu < Kc) Then Writeln('-Hai duong tron cat nhau') Else If (Tong < Kc) Then Writeln('-Hai duong tron o ngoai nhau'); Readln END. 68/im thi: Code: Program Diem_Thi; CONST Max = 50; Td1 = '|========================|======|======|======|'; Td2 = '| HO VA TEN | DIEM | TL1 | TL2 |'; Td3 = '|------------------------|------|------|------|'; Td4 = '|---------------------------------------------|';

TYPE

VAR

DiemThi = RECORD HoTen : String[24]; Diem1 : Real; Case ThiLai1 : Boolean Of True : (Diem2 : Real; Case ThiLai2 : Boolean Of True : (Diem3 : Real)); End;

Diem : Array[1..Max] Of DiemThi; n, i : 1..Max; BEGIN Writeln('-So luong sinh vien: '); Readln(n); For i := 1 To N Do With Diem[i] do Begin Write('+Ho va ten sinh vien thu: ',i,' = '); Readln(HoTen); Write('+Diem thi : '); Readln(Diem1); If Diem1 < 5 Then Begin ThiLai1 := True; Write(' -Diem thi lai lan 1= '); Readln(Diem2); If Diem2 < 5 Then Begin ThiLai2 := True; Write(' -Diem thi lai lan 2= '); Readln(Diem3); End; End; End; Writeln(#32:34,'KET QUA HOC TAP'); Writeln(#32:20,Td1); Writeln(#32:20,Td2); Writeln(#32:20,Td3); For i := 1 To N Do With Diem[i] Do Begin Write(#32:20); Write(#124,HoTen,#32:24-length(HoTen)); Write(#124,Diem1:6:1); If Diem1 < 5 Then Begin Write(#124,Diem2:6:1); If Diem2 < 5 Then Writeln(#124,Diem3:6:1,#124) Else Writeln(#124,#32:6,#124); End Else

Writeln(#124,#32 :6, #124, #32 :6, #124); End; Writeln(#32:20,Td4); Readln END. 69/Tnh a thc: Code: Program Da_Thuc; CONST MaxOrder = 10; TYPE PolyNom = RECORD Bac : Integer; HeSo : Array[0..MaxOrder] Of Real; End; VAR A,B,C : Polynom; i : Integer; {-------------------------} Procedure Nhap; Var i : Integer; Begin Repeat Writeln; Writeln('Hay nhap 2 da thu A(x), B(x) voi'); Write('-Bac A (phai <= ',MaxOrder,' ) = '); Readln(A.Bac); If A.Bac > MaxOrder Then Writeln(#7,'Bac A phai <= ',MaxOrder,' ! nhap lai '); Write('-Bac B (phai <= ',MaxOrder,' ) = '); Readln(B.Bac); If B.Bac > MaxOrder Then Writeln(#7,'Bac B phai <= ',MaxOrder,' ! nhap lai '); Until (A.Bac <= MaxOrder) And (B.Bac <= MaxOrder); For i := 0 To MaxOrder Do Begin A.Heso[i] :=0; B.Heso[i] :=0; End; Writeln; Writeln('Nhap ca he so cua da thuc A: '); For i := A.Bac DownTo 0 Do Begin Write(' A[',i,'] = '); Readln(A.heso[i]); End; Writeln; Writeln('Nhap ca he so cua da thuc B: '); For i := B.Bac DownTo 0 Do Begin Write(' B[',i,'] = '); Readln(B.heso[i]);

End;

End;

{-------------------------} Procedure Cong(A,B : Polynom; Var C : Polynom); Var BacMax :Integer; Begin If A.Bac < B.Bac Then Begin C.Bac :=B.Bac; For i := A.Bac + 1 To B.Bac Do A.Heso[i] := 0 End Else Begin C.Bac := A.Bac; For i := B.Bac + 1 To A.Bac Do B.Heso[i] := 0 End; C.Bac :=A.Bac; For i := C.Bac To MaxOrder Do C.Heso[i] := 0; For i := 0 To C.Bac Do C.Heso[i] := A.Heso[i] + B.Heso[i]; End; {-------------------------} Procedure Nhan(A,B : Polynom; Var C:Polynom); Var i,j : Integer; Begin For i := 0 To MaxOrder Do C.Heso[i] := 0; For i := 0 To A.Bac Do For j := 0 To B.Bac Do C.Heso[i+j] := C.Heso[i+j] + A.Heso[i] * B.Heso[j]; C.Bac :=A.Bac + B.Bac; End; {-------------------------} procedure Chia(P, Q :Polynom); Var i,k,kk : Integer; G : Polynom; Begin If P.Bac < Q.Bac Then For i := P.Bac + 1 To Q.Bac Do P.Heso[i] := 0; If P.Bac > Q.Bac Then For i := Q.Bac + 1 To P.Bac Do Q.Heso[i] := 0; Write('-Hay cho he so trong ket qua phep chia: '); Readln(kk);

Writeln('Da thuc ket qua xep theo so mu giam dan. '); Writeln; Write('Bac: '); For k := 0 To kk Do Write(P.Bac-Q.Bac-k:6); Writeln; Write('He so '); For k := 0 To kk Do Begin G.Heso[k] := P.Heso[P.bac] / Q.Heso[Q.Bac]; If Frac(G.Heso[k]) =0 Then Write(G.Heso[k]:6:0) Else Write(G.Heso[k]:6:0); For i:= Q.Bac DownTo 1 Do P.Heso[P.Bac-Q.Bac+i] := P.Heso[P.Bac+i-1] G.Heso[k]*Q.Heso[i-1]; For i := P.Bac-Q.bac Downto 0 Do P.Heso[i] :=0; End; End; {--------------------------} BEGIN Nhap; Nhan(A,B,C); Writeln; Writeln('Cac he so cua da thuc tich: '); Write('Bac: '); For i := 0 To C.Bac Do Write(i:7); Writeln; Write('He so: '); For i := 0 To C.Bac Do If Frac(C.Heso[i]) = 0 Then Write(C.Heso[i]:7:0) Else Write(C.Heso[i]:7:0); Writeln; Writeln; Chia(A,B); Readln END. 70/To bin ng v theo di kch thc b nh: Code: Program Tao_Bien_Dong; TYPE Str10 = String[10]; PStr = ^Str10; VAR Newp : PStr; i : Integer; Begin

Writeln('TAO BIEN DONG VA THEO DOI KICH THUOC BO NHO'); Writeln('-------------------------------------------'); Writeln; Writeln('-Bo nho ban dau la: ',MemAvail,' bytes'); Writeln; For i := 1 To 10 Do Begin New(Newp); Writeln(' +Sau khi tao bien thu: ',i:2,' bo nho con lai la: ',MemAvail,' bytes'); End; Writeln; Writeln('-Bo nho bay gio la : ',MemAvail,' bytes'); Writeln; Writeln(' Bam <Enter> de ket thuc'); Readln End. 71/To v xa cc bin ng: Code: Program Tao_Bien_Dong; TYPE ConTro = ^BanGhi; BanGhi = RECORD HoTen : String[24]; Tuoi : Byte; DiaChi : String[30]; Next : ConTro; End; VAR Newp : ConTro; HeapTop : Pointer; i : Integer; Begin Writeln('TAO VA XOA CAC BIEN DONG'); Writeln('------------------------'); Writeln; Writeln('-Bo nho ban dau la: ',MemAvail,' bytes'); Mark(HeapTop); Writeln('-Kich thuoc cua ban ghi la: ',Sizeof(BanGhi),' bytes'); For i := 1 To 10 Do Begin New(Newp); Writeln(' +Sau khi tao bien thu: ',i:2,' bo nho con lai: ',MemAvail,' Bytes'); End; Writeln; Writeln('-Bo nho bay gio la: ',MemAvail,' bytes'); Writeln; Writeln(' Bam <Enter> de xoa cac bien dong'); Readln; Release(HeapTop); Writeln; Writeln('-Bo nho bay gio lai la: ',MemAvail,' bytes');

Writeln; Writeln(' Readln End.

Bam <Enter> de ket thuc');

72/To bin ng ti a ch cho trc: Code: Program Tao_Con_Tro; VAR ConTro : ^String; Begin Writeln('TAO BIEN DONG TAI DIA CHI CHO TRUOC'); Writeln('-----------------------------------'); Writeln; ConTro :=Ptr($B800,$0004); ConTro^ := 'Turbo Pascal'; Writeln('-Du lieu cua bien ma con tro dang tro toi la: ',ConTro^); Writeln; Write(' Bam <Enter> de ket thuc'); Readln End. 73/Tnh im trung bnh ca lp: Code: Program Tinh_Diem; TYPE ConTro = ^BanGhi; BanGhi = RECORD HoTen : String[24]; Tuoi : Byte; Diem : Real; End; VAR Newp : ConTro; i,n : Integer; d,tong,tb :Real; Begin Writeln('TINH DIEM TRUNG BINH CUA LOP'); Writeln('----------------------------'); Writeln; Tong := 0.0; Write('-Lop co bao nhieu nguoi: '); Readln(n); Writeln; For i := 1 To N Do Begin New(Newp); With Newp^ Do Begin Write(' +Ho ten nguoi thu: ',i:2,' la: '); Readln(HoTen); Write(' +Tuoi : '); Readln(Tuoi); Write(' +Diem : ');

End; Writeln('-Diem trung binh cua lop la: ',Tb:5:2); Readln End. 74/Thay cu: Code: Program Dong; Uses Crt; CONST Max = 100; TYPE Str = String[255]; Mang = Array[1..Max] Of Str; VAR Cau,Cau1,Cu,Moi : Str; T : Mang; i,SoT,Chon : Integer; {---------------------------------------} Procedure Tach(Var S : Str; Var T : Mang; Var SoT : Integer); Var i,j,k,l : Integer; Begin k := 1; i := 1; l := Length(S); While ( i <= l) Do Begin While (S[i] = ' ') And (i <= L) Do i := I +1; j := 1; While (S[i] <> ' ') And (i <= l) Do Begin T[k][j] := S[i]; j := j +1; i := i +1; End; T[k][0] := Chr(j-1); k := k + 1; End; SoT := k - 1; End; {---------------------------------------} Procedure Nen(Var S : Str); Var i,j,l,z,xoa : Integer; Begin i := 1; j := 1;

Readln(Diem); d := Diem; Tong :=Tong + d; End; Tb := tong / n;

l := Length(S); Xoa := 0; While i <= l Do Begin z := i; While (S[i] = ' ') And ( i <= l) Do i := i + 1; Xoa := Xoa +i - z; While (S[i] <>' ') And ( i <= l ) Do Begin S[j] := S[i]; i := i + 1; j := j + 1; End; End; S[0] := Chr(l - Xoa); End; {---------------------------------------} Procedure Nen2(Var S : Str); Var i,j,l,z : Integer; Begin i := 1; l := Length(S); While i <= l Do Begin While (S[i] = ' ') And ( i <= l) Do i := i + 1; z := i; While (S[i] =' ') And ( i <= l ) Do i := i + 1; Delete(S,z,i-z); i := z; End; End; {---------------------------------------} Procedure Thay(Var S : Str; Sold, Snew : Str); Var Lo,Ln,LDu,p : Integer; St,Sdu : Str; Begin Lo := Length(Sold); Ln := Length(Snew); St :=' '; Sdu := S; P := Pos(Sold,Sdu); While P <> 0 Do Begin Ldu :=Length(Sdu); St := St + Copy(Sdu,1,P-1) + Snew; Delete(Sdu,1,P-1+Lo); P := Pos(Sold, Sdu); End;

S := St + Sdu; End; {---------------------------------------} BEGIN ClrScr; Write('Nhap Cau : '); Readln(Cau); While Cau <> ' ' do Begin Writeln(' 1.Tach cau'); Writeln(' 2.Nen cau'); Writeln(' 3.Thay the'); Writeln(' 0.Ket thuc'); Writeln; Write(' Chon : '); Readln(Chon); Case Chon Of 1 : Begin Tach(Cau,T, SoT); For i := 1 To SoT Do Writeln(T[i]); End; 2 : Begin Cau1 := Cau; Nen(Cau1); Writeln(Cau1); End; 3 : Begin Cau1 :=Cau; Repeat Write('+Muon thay: '); Readln(Cu); Until Cu <> ' '; Write('+ Bang : '); Readln(Moi); Thay(Cau1,Cu,Moi); Writeln(Cau1); End; 0 : Exit; End; End; END. 75/Hon v chui: Code: Program Hoan_Vi_Chuoi; Uses Crt; VAR Chuoi1,Chuoi2,Tam :^String; Begin ClrScr; Writeln('HOAN VI 2 CON TRO THAY CHO HOAN VI NOI DUNG'); Writeln('-------------------------------------------'); Writeln;

New(Chuoi1); New(Chuoi2); Chuoi1^ := 'Giao trinh Turbo Pascal 7.0'; Chuoi2^ := 'Giao trinh FoxPro 2.6'; Writeln; Writeln('NOI DUNG BAN DAU CUA 2 CHUOI'); Writeln('----------------------------'); Writeln; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('-Chuoi thu hai : ',Chuoi2^); Writeln; Writeln('NOI DUNG SAU KHI HOAN VI 2 CON TRO'); Writeln('----------------------------------'); Writeln; Tam := Chuoi1; Chuoi1 := Chuoi2; Chuoi2 := Tam; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('-Chuoi thu hai : ',Chuoi2^); Dispose(Chuoi1); Dispose(Chuoi2); Writeln; Write(' Bam <Enter> . . . '); Readln; End. 76/S ngu nhin: Code: Program So_ngau_Nhien; Uses Crt; CONST N = 100; VAR Mang : Array[1..N] Of ^Word; HeapTop : Pointer; {-------------------------------} Procedure TaoSo; Var i : Byte; Begin Randomize; For i := 1 To N Do Begin New(Mang[i]); Mang[i]^ := Random(999); End; End; {-------------------------------} Procedure SapXep; Var i : Byte; Tam : Word; KetThuc : Boolean; Begin

Repeat KetThuc := True; For i := 1 To n-1 Do If Mang[i]^ > Mang[i+1]^ Then Begin Tam := Mang[i]^; Mang[i]^ := Mang[i+1]^; Mang[i+1]^ := Tam; KetThuc := False; End; Until ketThuc; End; {-------------------------------} Procedure InKq; Var i :Byte; Begin For i := 1 To N Do Write(Mang[i]^:4); End; {-------------------------------} BEGIN ClrScr; Writeln(' TAO VA SAP XEP THU TU 100 SO NGAU NHIEN'); Writeln(' ---------------------------------------'); Writeln; Mark(HeapTop); TaoSo; SapXep; Inkq; Writeln; Write(' Bam <Enter> . . . '); Readln; Release(HeapTop); END. 77/Mang bin ng: Code: Program Mang_Bien_Dong; Uses Crt; TYPE ConTro = ^BanGhi; BanGhi = RECORD HoTen : String[24]; Next : ConTro; End; VAR First, Last, P : ConTro; HeapTop : Pointer; i : Byte; Ch : Char; {-------------------------------} Procedure KhoiTao; Begin

First := Nil; Mark(HeapTop); i := 0; Writeln('NHAP DU LIEU'); Writeln('Khong nhap nua thi bam <Enter> ...'); Repeat Inc(i); New(P); Write('-Ho ten nguoi thu: ',i:2,' : '); Readln(P^.HoTen); If First = Nil Then First := P Else Last^.Next := P; Last := P; Last^.Next := Nil; Until P^.HoTen = '' End; {-------------------------------} Procedure LietKe; Var Q : ConTro; Begin Q := First; i := 0; While Q <> Nil Do Begin Inc(i); Writeln(i:2,' >..: ',Q^.HoTen:-24); Q := Q^.Next; End; End; {-------------------------------} Procedure Xoa(N : Byte); Var k : Byte; Q : ConTro; Begin If N = 1 Then First := First^.Next Else Begin Q := First; For k := 1 To N-2 Do Q := Q^.Next; Q^.Next := Q^.Next^.Next; End; End; {-------------------------------} Procedure Chen(N : Byte); Var k : Byte; Q : ConTro; Begin

If N <= 0 Then Exit; New(P); Write('-Ho Ten muon chen: '); Readln(P^.HoTen); If N = 1 Then Begin P^.Next := First; First := P; End Else Begin Q := First; For k := 1 To N-2 Do Q := Q^.Next; P^.Next := Q^.Next; Q^.Next := P; End; End; {-------------------------------} BEGIN ClrScr; Writeln('Bo nho hien gio la: ',MemAvail); KhoiTao; Writeln; Write(' Bam <Enter> de xem danh sach ... '); Readln; LietKe; Writeln; Writeln('Bo nho hien gio la: ',MemAvail); Write(' Bam <Enter> de xoa danh sach ... '); Readln; Repeat Write('-Muon xoa ban ghi thu: '); Readln(i); Xoa(i); LietKe; Write('+Co xoa nua khong ?(c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; Writeln; Repeat Write('-Muon chen ban ghi thu: '); Readln(i); Chen(i); LietKe; Write('+Co chen nua khong ?(c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; Release(HeapTop); Writeln; Writeln('Bo nho hien gio la: ',MemAvail); Writeln; Write(' Bam <Enter> . . . ');

Readln END. 78/Tao danh sach: Code: Program Tao_Danh_Sach; Uses Crt; TYPE ConTro = ^DanhSach; DanhSach = RECORD So : Word; Next : ConTro; End; VAR First,P,Tam : ConTro; {----------------------------------} Procedure KhoiDong; Begin First := Nil; End; {----------------------------------} Procedure Nhap; Var i : Word; Begin Writeln('NHAP CAC SO'); Writeln('Neu khong nhap, go so 0'); i :=0; Repeat New(Tam); Inc(i); Write('-Nhap so thu: ',i:2,' = '); Readln(Tam^.So); Tam^.Next := Nil; If Tam^.So <> 0 Then If First = Nil Then Begin First := Tam; P := Tam; End Else Begin P^.Next := Tam; P := Tam; End; Until Tam^.So =0; End; {----------------------------------} Procedure LietKe; Begin Writeln('CAC SO DA NHAP'); Writeln('--------------'); Writeln;

P := First; While P <> Nil Do Begin Write(P^.So:8); P := P^.Next; End; End; {----------------------------------} Procedure KetThuc; Begin If First <> Nil Then Release(First); End; {----------------------------------} BEGIN ClrScr; Writeln('TAO DANH SACH CAC SO NGUYEN'); Writeln('---------------------------'); Writeln; KhoiDong; Nhap; LietKe; KetThuc; Writeln; Write(' Bam <Enter> . . . '); Readln; END. 79/Chen s: Code: Program Chen_So; Uses Crt; CONST N = 10; TYPE ConTro = ^BanGhi; BanGhi = RECORD So : Word; Next : ConTro; End; ViTri = 1..n; VAR First,P,Tam : ConTro; V : ViTri; {----------------------------------} Procedure KhoiDong; Begin First := Nil; End; {----------------------------------} Procedure TaoSo; Var i : Byte; Begin

Randomize; For i := 1 To n Do Begin New(Tam); Tam^.So := Random($FFFF); Tam^.Next := Nil; If i = 1 Then Begin First := Tam; P := Tam; End Else Begin P^.Next := Tam; P := Tam; End; End; End; {----------------------------------} Procedure Nhap; Begin Repeat Writeln; Write(' -Cho biet vi tri muon chen: '); Readln(v); Until (v >= 1) And (v <=n); New(Tam); Writeln; Write(' -Cho biet gia tri muon chen: '); Readln(Tam^.So); End; {----------------------------------} Procedure Chen(v : ViTri); Var i : Byte; Begin If v = 1 Then Begin Tam^.Next := First; First := Tam; End Else Begin P := First; For i := 1 To v-2 Do P := P^.Next; Tam^.Next := P^.Next; P^.Next := Tam; End; End; {----------------------------------} Procedure LietKe; Begin P := First;

While P <> Nil Do Begin Write(P^.So : 7); P := P^.Next; End; End; {----------------------------------} Procedure KetThuc; Begin If First <> Nil Then Release(First); End; {----------------------------------} BEGIN ClrScr; Writeln(' NHAP VA CHEN SO VAO VI TRI CHI DINH'); Writeln(' -----------------------------------'); Writeln; KhoiDong; TaoSo; Writeln(' 10 SO TRONG DANH SACH LA: '); Writeln; LietKe; Writeln; Nhap; Writeln; Chen(v); Writeln; Writeln(' DANH SACH SAU KHI CHEN'); Writeln; LietKe; KetThuc; Writeln; Writeln; Write(' Bam <Enter>... '); Readln END. 80/Chen xa s: Code: Program Chen_Xoa_So; Uses Crt; CONST N = 20; TYPE ConTro = ^BanGhi; BanGhi = RECORD So : Word; Next : ConTro; End; ViTri = 1..n; VAR First,P,Tam : ConTro; V : ViTri;

{----------------------------------} Procedure KhoiDong; Begin First := Nil; End; {----------------------------------} Procedure TaoSo; Var i : Byte; Begin Randomize; For i := 1 To n Do Begin New(Tam); Tam^.So := Random(10); Tam^.Next := Nil; If i = 1 Then Begin First := Tam; P := Tam; End Else Begin P^.Next := Tam; P := Tam; End; End; End; {----------------------------------} Procedure XoaSo; Procedure Xoa5; Begin Tam := P; If P = First Then Begin First := P^.Next; P := P^.Next; End Else Begin P := First; While P^.Next <> Tam Do P := P^.Next; P^.Next := Tam^.Next; P := P^.Next; End; Dispose(Tam); End; Begin P := First; While P <> Nil Do Begin If P^.So < 5 Then

Xoa5 Else P := P^.Next End; End; {----------------------------------} Procedure LietKe; Begin P := First; While P <> Nil Do Begin Write(P^.So : 5); P := P^.Next; End; End; {----------------------------------} Procedure KetThuc; Begin If First <> Nil Then Release(First); End; {----------------------------------} BEGIN ClrScr; Writeln(' XOA CA SO NHO HON 5'); Writeln(' -------------------'); KhoiDong; TaoSo; Writeln; Writeln(' 20 SO TRONG DANH SACH LA: '); Writeln; LietKe; Writeln; XoaSo; Writeln; Writeln(' DANH SACH CAC SO >= 5'); Writeln; LietKe; KetThuc; Writeln; Writeln; Write(' Bam <Enter>... '); Readln END. 81/To danh sch chn l: Code: Program Tach_Danh_Sach_Chan_Le; Uses Crt; TYPE Mang = Array[1..100] Of Integer; VAR i,j,k,n : Integer; a,b,c : Mang;

Begin ClrScr; Writeln(' NHAP DANH SACH'); Writeln(' --------------'); Write('-So phan tu: '); Readln(n); For i := 1 To n Do Begin Write('-Phan tu thu: ',i:2,' = '); Readln(a[i]); End; Writeln; Writeln(' TACH THANH 2 DANH SACH'); Writeln(' ----------------------'); Writeln; j := 1; k := 1; For i := 1 To n Do If Odd(a[i]) Then Begin b[j] := a[i]; j := j + 1; End Else Begin c[k] :=a[i]; k := k + 1; End; Writeln; Writeln(' -Danh sach thu nhat ( so le ) '); Writeln; For i := 1 To j-1 Do Write(b[i],' '); Writeln; Writeln; Writeln(' -Danh sach thu hai ( so chan ) '); Writeln; For i := 1 To k-1 Do Write(c[i],' '); Writeln; Write(' Bam <Enter> . . . '); Readln End. 82/Xa gi tr X trong danh sch: Code: Program Loai_bo; Uses Crt; TYPE Mang = array[1..100] Of Integer; VAR i,Na,Nb,x : Integer; a: mang; {--------------------------------------}

Procedure LoaiBo(x : Integer; Var a:mang; Var Na : Integer); Var i,j : Integer; Begin i := 1; While i <= Na Do If (a[i] <> x) Then i := i + 1 Else Begin For j := i To Na - 1 Do a[j] := a[j+1]; Na := Na - 1; End; End; {--------------------------------------} Begin ClrScr; Writeln(' XOA TRI X TRONG DANH SACH'); Writeln(' --------------------------'); Writeln; Write('-So phan tu: '); Readln(Na); Nb := Na; For i := 1 To Na Do Begin Write('-Phan tu thu: ',i:2,' = '); Readln(a[i]); End; Writeln; Write('+Phan tu can loai bo: '); Readln(x); Loaibo(x,a,Na); If Na = Nb Then Writeln('Khong tim thay') Else Writeln('Da loai bo'); Writeln; Writeln('DANH SACH CON LAI'); Writeln('-----------------'); Writeln; For i := 1 To Na Do Write(a[i],' '); Writeln; Write(' Bam <Enter> . . . '); Readln; End. 83/m s phn t ca danh sch: Code: Program Dem_nut; Uses Crt; TYPE ConTro = ^Nut;

Nut = RECORD So : Integer; Next : ConTro; End; VAR Nut1,Tam : ConTro; Ch : Char; {-------------------------------------} Function SoNut(Nut1 : ConTro): Integer; Var sn : Integer; Begin sn := 0; Tam := Nut1; While Tam <> Nil Do Begin sn := sn + 1; Tam := Tam^.Next; End; SoNut :=sn; End; {-------------------------------------} BEGIN ClrScr; Writeln(' DEM SO PHAN TU (NUT) CUA DANH SACH'); Writeln('-----------------------------------'); Writeln; Nut1 := Nil; Repeat New(Tam); Write('-Nhap so: '); Readln(Tam^.So); Tam^.Next := Nut1; Nut1 := Tam; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K'; Writeln('+So nut cua danh sach: ',Sonut(Nut1)); Writeln; Write(' Bam <Enter> . . . '); Readln; END. 84/Tm a ch nt cui: Code: Program Dem_Nut_Cuoi; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD So : Integer; Next : ConTro; End; VAR

Nut1,Tam : ConTro; Ch : Char; {-------------------------------------} Function DemNutCuoi(Nut1 : ConTro): ConTro; Begin Tam := Nut1; While Tam^.Next <> Nil Do Tam:= Tam^.Next; DemNutCuoi := Tam; End; {-------------------------------------} BEGIN ClrScr; Writeln('TIM DIA CHI NUT CUOI'); Writeln('--------------------'); Writeln; Nut1 := Nil; Repeat New(Tam); Write('-Nhap so: '); Readln(Tam^.So); Tam^.Next := Nut1; Nut1 := Tam; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K'; Writeln('+So o nut cuoi cua danh sach: ',DemNutCuoi(Nut1)^.So); Writeln; Write(' Bam <Enter> . . . '); Readln; END. 85/Tnh tr trung bnh cng: Code: Program Trung_Binh; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD So : Integer; Next : ConTro; End; VAR Nut1,Tam : ConTro; Ch : Char; {-------------------------------------} Function Tbc(Nut1 : ConTro): Real; Var Tong,SoNut : Integer; Begin Tong := 0; SoNut := 0; Tam := Nut1; While Tam <> Nil Do

Begin SoNut := SoNut + 1; Tong := Tong + Tam^.So; Tam := Tam^.Next; End; Tbc := Tong / SoNut; End; {-------------------------------------} BEGIN ClrScr; Writeln(' TINH TRI TRUNG BINH CONG'); Writeln(' ------------------------'); Nut1 := Nil; Repeat New(Tam); Write('-Nhap so: '); Readln(Tam^.So); Tam^.Next := Nut1; Nut1 := Tam; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K'; Writeln('+Trung binh cong cua danh sach: ',Tbc(Nut1):6:1); Writeln; Write(' Bam <Enter> . . . '); Readln; END. 86/Chn v Xa: Code: Program Chen_Xoa; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD So : Integer; Next : ConTro; End; VAR Nut1,Tam : ConTro; So1 : Integer; Ch : Char; {-------------------------------------} Procedure Chen(Var Nut1 : ConTro; So1 : Integer); Begin New(Tam); Tam^.So :=So1; Tam^.Next := Nut1; Nut1 := Tam; Writeln('Da chen xong, bam <Enter> ... '); Readln End; {-------------------------------------} Procedure Xoa(Var Nut1 : ConTro; So1 : Integer);

NutTruoc : ConTro; TimThay : Boolean; Begin Tam := Nut1; NutTruoc := Nil; TimThay := False; While (Tam <> Nil) And (Not TimThay) Do If Tam^.So = So1 Then TimThay := True Else Begin NutTruoc := Tam; Tam := Tam^.Next; End; If TimThay Then Begin If NutTruoc = Nil Then Nut1 := Tam^.Next Else NutTruoc^.Next := Tam^.Next; Dispose(Tam); Write(' Da xoa xong, bam <Enter> ... '); Readln End Else Begin Write(' Khong tim thay, bam <Enter> ... '); Readln End; End; {-------------------------------------} Procedure Xem(Var Nut1 : ConTro); Begin Tam := Nut1; While Tam <> Nil Do Begin Write(Tam^.So : 6); Tam := Tam^.Next; End; Writeln; Write(' Xem xong, bam <Enter> . . .'); Readln End; {-------------------------------------} BEGIN ClrScr; Writeln(' NHAP, CHEN, XEM, XOA SO NGUYEN'); Writeln(' ------------------------------'); Writeln; Nut1 := Nil; Repeat New(Tam); Write('-Nhap so: ');

Var

Readln(Tam^.So); Tam^.Next := Nut1; Nut1 := Tam; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K'; Repeat ClrScr; Repeat Writeln; Writeln('CHON CHUC NANG'); Writeln('--------------'); Writeln('1-Chen '); Writeln('2-Xoa '); Writeln('3-Xem '); Writeln('4-Ket thuc '); Ch := Readkey; Until Ch in ['1'..'4']; Case Ch Of '1' : Begin Write('-So muon chen: '); Readln(So1); Chen(Nut1,So1); End; '2' : Begin Write('-So muon xoa: '); Readln(So1); Xoa(Nut1,So1); End; '3' : Begin Xem(Nut1); End; End; Until Ch = '4'; END. 87/o ngc danh sch: Code: Program Dao_Danh_Sach; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD So : Integer; Next : ConTro; End; VAR Nut1,Tam1,Tam2 : ConTro; Ch : Char; BEGIN ClrScr; Writeln(' DAO NGUOC DANH SACH'); Writeln(' -------------------'); Nut1 := Nil;

Repeat New(Tam1); Write('-Nhap so: '); Readln(Tam1^.So); Tam1^.Next := Nut1; Nut1 := Tam1; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch)= 'K'; Tam1 := Nut1; Nut1 := Nil; Repeat Tam2 := Tam1^.Next; Tam1^.Next := Nut1; Nut1 := Tam1; Tam1 := Tam2; Until Tam1 = Nil; Writeln('Sau khi dao: '); Tam1 := Nut1; While Tam1 <> Nil Do Begin Write(Tam1^.So:6); Tam1 := Tam1^.Next; End; Writeln; Write(' Bam <Enter> . . . '); Readln END. 88/Ghp chui: Code: Program Ghep_Chuoi; Uses Crt; TYPE ConTro = ^Nut; Nut = RECORD Kt : Char; Next : ConTro; End; VAR Dau1,Cuoi1 : ConTro; Dau2,Cuoi2 : ConTro; Tam : ConTro; Ch : Char; i : Integer; BEGIN ClrScr; Writeln('CHUOI THU NHAT'); Writeln('--------------'); Writeln; i := 0; Repeat i := i + 1; New(Tam);

Write('-Ky tu thu: ',i:2,' : '); Readln(Tam^.Kt); If i = 1 Then Begin Dau1 := Tam; Cuoi1 := Tam; End Else Begin Cuoi1^.Next := Tam; Cuoi1 := Tam; End; Write('Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; ClrScr; Writeln('CHUOI THU HAI'); Writeln('--------------'); Writeln; i := 0; Repeat i := i + 1; New(Tam); Write('-Ky tu thu: ',i:2,' : '); Readln(Tam^.Kt); If i = 1 Then Begin Dau2 := Tam; Cuoi2 := Tam; End Else Begin Cuoi2^.Next := Tam; Cuoi2 := Tam; End; Write('Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; Cuoi1^.Next := Dau2; Cuoi2^.Next :=Nil; Writeln; Writeln(' KET QUA'); Writeln('---------'); Tam := Dau1; While Tam <> Nil Do Begin Write(Tam^.Kt); Tam := Tam^.Next; End; Writeln; Write(' Bam <Enter> . . . '); Readln END. 89/Mng con tr 2 chiu:

Code: Program Mang_Con_Tro_Hai_Chieu; Uses Crt; TYPE ConTro = ^BanGhi; BanGhi = RECORD HoTen : String[24]; Pre, Next : ConTro; End; VAR First,Last,P : ConTro; i : Byte; Heaptop : Pointer; {----------------------------------} Procedure KhoiTao; Begin First := Nil; Mark(HeapTop); i := 0; Repeat Inc(i); New(P); Write('-(Khong nhap,bam <Enter>). Ho ten nguoi thu: ',i:2,' : '); Readln(P^.HoTen); If First = Nil Then Begin First := P; First^.Pre := Nil End Else Begin Last^.Next := P; P^.Pre := Last; End; Last := P; Last^.Next := Nil Until P^.HoTen =''; End; {----------------------------------} Procedure DuyetXuong; Var P : ConTro; i : Byte; Begin P := First; i := 0; While P <> Nil Do Begin Inc(i); Writeln(i:2,'>... : ',P^.HoTen: -28); P := P^.Next; End; End;

{----------------------------------} Procedure DuyetLen; Var P : ConTro; i : Byte; Begin P := Last; i := 0; While P <> Nil Do Begin Inc(i); Writeln(i:2,'>... : ',P^.HoTen: -28); P := P^.Pre; End; End; {----------------------------------} BEGIN ClrScr; Writeln('DUYET DANH SACH THEO 2 CHIEU'); Writeln('Tu dau den cuoi danh sach'); Writeln('Tu cuoi len dau danh sach'); Writeln('-------------------------'); Writeln; KhoiTao; Writeln; Writeln(' Bam <Enter> de xem tu tren xuong duoi danh sach'); Readln; ClrScr; DuyetXuong; Writeln; Writeln(' Bam <Enter> de xem tu duoi len tren danh sach'); Readln; DuyetLen; Writeln; Write(' Bam <Enter> de ket thuc '); Readln; Release(HeapTop); END. 90/Danh sch lin kt: Code: Program Danh_Sach_Lien_ket; Uses Crt; TYPE ConTro = ^BanGhi; BanGhi = RECORD HoTen : String[24]; DiaChi : String[20]; ChucVu : String[15]; DonVi : String[20]; Next : ConTro; End; VAR First, Last,P,F: ConTro;

Ch : Char; {-------------------------------------} Procedure Noi; {-------------------------------------} Procedure Nhap; Begin With P^ Do Begin Write('-Ho va ten: '); Readln(HoTen); Write('-Dia chi : '); Readln(DiaChi); Write('-Chuc vu : '); Readln(Chucvu); Write('-Don vi : '); Readln(DonVi); End; End; {-------------------------------------} Begin ClrScr; If First = Nil Then Begin New(P); Nhap; First := P; P^.Next := Nil; First := P; Last := P; End Else Begin F := P; New(P); Nhap; F^.Next := P; P^.Next := Nil; End; End; {-------------------------------------} Procedure Duyet; Var P : ConTro; Begin P := First; While P <> Nil Do Begin With P^ Do Writeln(HoTen,' , ',DiaChi,' , ',ChucVu,' , ',DonVi); P := P^.Next; End; Writeln; Writeln('Bam <Enter> ... ');

Readln End; {-------------------------------------} BEGIN First := Nil; Repeat ClrScr; Repeat Write('Bam (N)oi, (D)uyet, hoac (K)et thuc '); Ch := ReadKey; If Ch = #0 Then Ch := Readkey; Writeln; Ch := UpCase(Ch); Until Ch In ['N','D','K']; If Ch = 'N' Then Noi Else If Ch = 'D' Then Duyet Until Ch = 'K' END. 91/Danh sch mc ni: Code: Program Danh_Sach_Moc_Noi; Uses Crt; TYPE ConTro = ^SoNguyen; SoNguyen = RECORD So : Integer; Next : ConTro; End; VAR First,Last,P :ConTro; So1 : Integer; Ch : Char; {----------------------------------} Procedure Nhap(Var First, Last : ConTRo); Var i : Integer; Begin ClrScr; Writeln('NHAP DU LIEU'); Writeln('------------'); Writeln; i := 0; Repeat i := i + 1; New(P); Write('-So thu: ',i:2,' = '); Readln(P^.So); If i = 1 Then Begin

First := P; Last := P; End Else Begin Last^.Next := P; Last := P; End; Write(' Nhap nua khong ? (c/k) '); Readln(Ch); Until UpCase(Ch) = 'K'; Last^.Next := Nil End; {----------------------------------} Procedure Noi(Var First,Lasr : ConTro; Var So1 : Integer); Begin Writeln; New(P); P^.So := So1; If First = Nil Then First := P; Last^.Next := P; Last := P; Last^.Next := Nil; Writeln; Write('Da noi vao cuoi danh sach, bam <Enter> . . . '); Readln End; {----------------------------------} Procedure Xoa(Var First : ConTro; Var So1 : Integer); Begin Writeln; So1 :=First^.So; P := First; First := First^.Next; Dispose(P); Writeln; Write(' Da xoa so dau, bam <Enter> . . . '); Readln End; {----------------------------------} Procedure LietKe(First : ConTro); Begin Writeln; P := First; If P = Nil Then Writeln('Danh sach rong'); While P <> Nil Do Begin Write(P^.So : 5); P := P^.Next; End; Writeln; Write(' Xem xong, bam <Enter> . . . ');

Readln End; {----------------------------------} BEGIN First := Nil; Last := Nil; Repeat ClrScr; Writeln(' DANH SACH MOC NOI'); Writeln(' Them vao cuoi, xoa dau danh sach'); Repeat Writeln('1-Nhap so'); Writeln('2-Liet ke'); Writeln('3-Noi them'); Writeln('4-Xoa'); Writeln('5-Ket thuc'); Writeln; Write('Chon chuc nang nao: '); Ch := Readkey; Until Ch in ['1'..'5']; Case Ch Of '1' : Nhap(First, Last); '2' : LietKe(First); '3' : Begin Writeln; Write('-Nhap so muon noi them: '); Readln(So1); Writeln; Writeln('DANH SACH TRUOC KHI NOI LA'); LietKe(First); Noi(First,Last,So1); Writeln; Writeln('DANH SACH SAU KHI NOI THEM SO LA'); LietKe(First); End; '4' : If First = Nil Then Begin Writeln(' Danh sach rong, khong xoa duoc'); Writeln('Bam <Enter> . . . '); Readln End Else Begin Writeln; Writeln(' DANH SACH TRUOC KHI XOA SO'); LietKe(First); Xoa(First,So1); Writeln('-So vua xoa la: ',So1); Writeln; Writeln(' DANH SACH CON LAI SAU KHI XOA SO DAU'); LietKe(First); End; End; Until Ch ='5'

END. 92/Danh sch LK: Code: Program Danh_Sach_LK; Uses Crt; TYPE Str = String[24]; ConTro = ^BanGhi; BanGhi = RECORD HoTen : Str; Luong : Real; Next : ConTro; End; VAR First : ConTro; Nv : BanGhi; Ketthuc : Boolean; Ch : Char; {--------------------------------} Procedure Chen(Var First : ConTro; Nv : BanGhi); Var P : ConTro; Begin New(P); P^.HoTen := NV.HoTen; P^.Luong := NV.Luong; P^.Next := First; First := P; End; {--------------------------------} Procedure Xoa(Var First : ConTro; Nv : BanGhi); Var P,P1 : ConTro; Begin If First^.HoTen = NV.HoTen Then Begin P := First; First :=First^.Next; Dispose(P); End Else Begin P := First; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do Begin P1 := P; P := P^.Next; End; If P = Nil Then Writeln('Khong tim thay') Else Begin P1^.Next := P^.Next;

Dispose(P); End; End; End; {--------------------------------} Procedure Tim(First : ConTro; Nv : BanGhi); Var P : ConTro; Begin P := First; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do P := P^.Next; If P = Nil Then Writeln('Khong tim thay') Else Begin Writeln('Tim thay'); Writeln(P^.HoTen,' ', P^.Luong:8:1); End; End; {--------------------------------} Procedure LietKe(First : ConTro); Var P : ConTro; Begin Writeln; If First = Nil Then Writeln('Danh sach rong') Else Begin P := First; While ( P <> Nil) Do Begin Writeln(P^.HoTen,' ',P^.Luong:8:1); P := P^.Next; End; End; Writeln; Write('Xem xong, bam <Enter> . . . '); Readln End; {--------------------------------} Procedure XoaHet(Var First : ConTro); Var P1,P : ConTro; Begin P := First; While P <> Nil Do Begin P1 := P^.Next; Dispose(P); P := P1; End; First := Nil

End; {--------------------------------} Procedure DaoNguoc(Var First : ConTro); Var P,P1,Tam: ConTro; Begin If (First <> Nil) And ( First^.Next <> Nil) Then Begin P1 := First; P := P1^.Next; First^.Next := Nil; While (P <> Nil) Do Begin Tam := P^.Next; P^.Next := P1; P1 := P; P := Tam; End; First := P1; End; Writeln; Write('Da dao nguoc danh sach, bam <Enter> . . . '); Readln End; {--------------------------------} BEGIN Repeat ClrScr; Writeln; Writeln('CAC CHUC NANG'); Writeln('-------------'); Writeln('Chu y: Danh sach LIFO hoac FILO'); Writeln('Ban ghi nhap vao dau nhung xuat ra cuoi'); Writeln('1-KHOI TAO DANH SACH'); Writeln('2-NOI THEM VAO DANH SACH'); Writeln('3-XOA KHOI DANH SACH'); Writeln('4-TIM KIEM TRONG DANH SACH'); Writeln('5-LIET KE DANH SACH'); Writeln('6-DAO NGUOC DANH SACH'); Writeln('7-KET THUC CHUONG TRINH'); Writeln; Write('Chon cac chuc nang tu 1 den 7: '); Readln(Ch); Case Ch Of '1' : Begin Writeln('1-TAO DANH SACH'); First := Nil; KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Ente> de ngung: '); Readln(HoTen); If HoTen <> '' Then

'2'

'3'

Begin Write('-Bac luong : '); Readln(Luong); Chen(First,Nv); End Else KetThuc := True; End; Until ketThuc; End; : Begin Writeln('2-NOI THEM VAO DAU DANH SACH'); KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Begin Write('-Bac luong : '); Readln(Luong); Chen(First,Nv); End Else KetThuc := True; End; Until ketThuc; End; : Begin Writeln('3.XOA KHOI DANH SACH'); KetThuc := False; Repeat With Nv Do Begin Write('Ho ten can xoa, hoac <Enter> de ngung: Readln(HoTen); If HoTen <> '' Then Xoa(First,NV) Else KetThuc := True; End; Until KetThuc; End; Begin Writeln('4-TIM KIEM TRONG DANH SACH'); KetThuc := False; Repeat With Nv Do Begin Write('Ho ten can tim, hoac <Enter> de ngung: Readln(HoTen);

');

'4'

');

'5'

'6'

'7'

End; Until Ch = '7' END.

If HoTen <> '' Then Tim(First,NV) Else KetThuc := True; End; Until KetThuc; End; Begin Writeln('5-LIET KE NOI DUNG DANH SACH'); LietKe(First) End; Begin Writeln('6-DAO NGUOC NOI DUNG DANH SACH'); DaoNguoc(First) End; Begin Writeln('7-XOA HET NOI DUNG DANH SACH ROI KET THUC'); XoaHet(First) End;

93/Cy nh phn (code 2): Code: Program Cay_Nhi_Phan; Uses Crt; TYPE Str = String[24]; ConTro = ^BanGhi; BanGhi = RECORD HoTen : Str; Luong : Real; Trai,Phai : ConTro; End; VAR Goc : ConTro; Nv : BanGhi; Ketthuc : Boolean; Ch : Char; {--------------------------------} Procedure Chen(Var Goc : ConTro; Nv : BanGhi); Var P,P1 : ConTro; Begin If goc = Nil Then Begin New(Goc); With Goc^ Do Begin HoTen := NV.HoTen; Luong := NV.Luong; Trai := Nil; Phai := Nil;

End; End Else Begin P := Goc; P1 := Nil; While P <> Nil Do Begin P1 := P; If Nv.HoTen <= P^.HoTen Then P := P^.Trai Else P := P^.Phai; End; New(P); With P^ Do Begin HoTen := NV.HoTen; Luong := NV.Luong; Trai := Nil; Phai := Nil; End; If NV.HoTen <=P1^.HoTen Then P1^.Trai := P Else P1^.Phai := P; End; End; {--------------------------------} Procedure Xoa(Var Goc : ConTro; Nv : BanGhi); Var P,P1,Q,Q1 : ConTro; Nhanh :(NhanhTrai,NhanhPhai); Begin If Goc = Nil Then Writeln('Cay rong') Else Begin P := Goc; P1 := Nil; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do Begin P1 := P; If Nv.HoTen < P^.HoTen Then Begin P := P^.Trai; Nhanh := NhanhTrai; End Else Begin P := P^.Phai; Nhanh := NhanhPhai; End; End;

End; {--------------------------------} Procedure Tim(Goc : ConTro; Nv : BanGhi); Var P : ConTro; Begin P := Goc; While (P <> Nil) And (P^.HoTen <> Nv.HoTen) Do If NV.HoTen < P^.HoTen Then P := P^.Trai Else P := P^.Phai; If P = Nil Then Writeln('Khong tim thay') Else Begin Writeln('Tim thay'); Writeln(P^.HoTen,' ', P^.Luong:8:1); End; End; {--------------------------------}

If P = Nil Then Writeln('Khong tim thay') Else Begin If (P^.Trai = Nil) Then Q := P^.Phai Else Begin Q := P^.Trai; Q1 := Nil; While Q^.Phai <> Nil Do Begin Q1 := Q; Q := Q^.Phai; End; If Q1 <> Nil Then Begin Q1^.Phai := Q^.Trai; Q^.Trai := P^.Trai; End; If P1 = Nil Then Goc := Q Else Begin If Nhanh = NhanhTrai Then P1^.Trai := Q Else P1^.Phai := Q; End; Dispose(P); End; End; End;

Procedure LNRLietKe(Goc : ConTro); Begin If Goc = Nil Then Begin Writeln('Cay rong, chua co du lieu'); End Else Begin If Goc^.Trai <> Nil Then LNRLietKe(Goc^.Trai); Writeln(Goc^.HoTen,', ',Goc^.Luong:8:1); If Goc^.Phai <> Nil Then LNRLietKe(Goc^.Phai); End; End; {--------------------------------} BEGIN Repeat ClrScr; Writeln; Writeln('CAC CHUC NANG CAY NHI PHAN'); Writeln('--------------------------'); Writeln; Writeln('1-Khoi tao cay'); Writeln('2-Noi them vao cay'); Writeln('3-Xoa khoi cay'); Writeln('4-Tim kiem tren cay'); Writeln('5-Liet ke danh sach'); Writeln('6-Ket thuc chuong trinh'); Writeln; Write('Chon cac chuc nang tu 1 den 6: '); Readln(Ch); Case Ch Of '1' : Begin ClrScr; Writeln('1-KHOI TAO CAY'); Writeln('Cay co thu tu LNR'); Writeln('-----------------'); Writeln; Goc := Nil; KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Begin Write('-Bac luong : '); Readln(Luong); Chen(Goc,Nv); End Else KetThuc := True;

'2'

'3'

');

End; Until ketThuc; End; : Begin ClrScr; Writeln; Writeln('2-NOI VAO CAY THEO THU TU'); Writeln('-------------------------'); Writeln; KetThuc := False; Repeat With Nv Do Begin Write('-Ho ten hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Begin Write('-Bac luong : '); Readln(Luong); Chen(Goc,Nv); End Else KetThuc := True; End; Until ketThuc; End; : Begin ClrScr; Writeln; Writeln('3.XOA KHOI CAY'); Writeln('--------------'); Writeln; KetThuc := False; Repeat With Nv Do Begin Write('Ho ten can xoa, hoac <Enter> de ngung: Readln(HoTen); If HoTen <> '' Then Xoa(Goc,NV) Else KetThuc := True; End; Until KetThuc; End; Begin ClrScr; Writeln('4-TIM KIEM TREN CAY'); Writeln('-------------------'); Writeln; ketThuc := False; Repeat With Nv Do

'4'

Begin Write('Ho ten can tim, hoac <Enter> de ngung: '); Readln(HoTen); If HoTen <> '' Then Tim(Goc,NV) Else KetThuc := True; End; Until KetThuc; End; Begin ClrScr; Writeln('5-LIET KE NOI DUNG CAY'); Writeln('Hien thi theo thu tu ABC...'); Writeln('---------------------------'); Writeln; LNRLietKe(Goc); Writeln; Write('Xem xong bam <Enter> . . . '); Readln End; Begin Writeln('7- KET THUC CHUONG TRINH'); Writeln; End;

'5'

'6'

End; Until Ch = '6' END. 94/i s thc ra phn s ti gin: Code: Program Phan_So_1; Uses PhanSo1; Var x : T_PhanSo1; r : Real; BEGIN Writeln('DOI SO THUC RA OHAN SO TOI GIAN'); Writeln('-------------------------------'); Writeln; Write('-Nhap mot so thuc: '); Readln(r); Writeln; With x Do Begin KhoiDong; Write('+Doi ra dang phan so la= '); Doi(r); Xuat; Writeln; Write('+Phan so toi gian la = '); Toigian; Xuat;

End; Readln END. 95/So snh, cng 2 s thc di dng phn s: Code: Program Phan_So_2; Uses PhanSo2; Var X,Y : T_PhanSo2; so1,so2 : Real; Begin Writeln('SO SANH, CONG 2 SO THUC DUOI DANG PHAN SO'); Writeln('----------------------------------------'); Writeln; Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai : '); Readln(so2); X.KhoiDong; Y.KhoiDong; X.Doi(So1); Y.Doi(So2); Writeln; Write('-Doi so thu nhat ra phan so la : '); X.Xuat; Writeln; Write('-Doi so thu hai ra phan so la : '); Y.Xuat; Writeln; Writeln; If X.LonHon(Y) Then Writeln('-So thu nhat lon hon so thu hai'); If Y.LonHon(X) Then Writeln('-So thu hai lon hon so thu nhat'); Writeln; X.Cong(Y); Write('-Tong 2 phan so la : '); X.Xuat; Writeln; Write(' Bam <Enter> . . . '); Readln End. 96/So snh, cng 2 s thc chnh lnh ln: Code: Program Phan_So_3; Uses PhanSo3; Var X,Y : T_PhanSo3; so1,so2 : Real; Begin Writeln('SO SANH, CONG 2 SO THUC CHENH LECH LON'); Writeln('--------------------------------------');

Writeln; Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai : '); Readln(so2); X.KhoiDong; Y.KhoiDong; X.Doi(So1); Y.Doi(So2); Writeln; If X.LonHon(Y) Then Writeln('-So thu nhat lon hon so thu hai'); If Y.LonHon(X) Then Writeln('-So thu hai lon hon so thu nhat'); Writeln; X.Cong(Y); Write('-Tong 2 so la : '); X.Xuat; Writeln; Write(' Bam <Enter> . . . '); Readln End. 97/c 1 tp tin: Code: Program ListDemo; Uses ListUtil; TYPE StrObjPtr = ^StrObj; StrObj = OBJECT(Item) St : ^String; Constructor Init(InitStr : String); Destructor Done; Virtual; Procedure Print; Virtual; End; VAR ItemList : List; F : Text; {bien kieu tap tin van ban} Line : String[80]; {-----------------------------} Constructor StrObj.Init; Begin Item.Init; GetMem(St,length(InitStr) + 1); St^ := InitStr; End; {-----------------------------} Destructor Strobj.Done; Begin FreeMem(St, Length(St^) + 1); Item.Done; End; {-----------------------------} Procedure StrObj.Print;

Begin Item.Print; Write(St^); End; {-----------------------------} BEGIN ItemList.Init; Writeln('-Bo nho truoc khi doc tap tin: ',MemAvail,' bytes'); Writeln; Write('-Bam <Enter> de doc tap tin BAITHO.TXT tu dia '); Readln; Assign(F,'BAITHO.TXT'); {Gan bien tap tin} Reset(F); {Mo tap tin da co tren dia } While Not EOF(F) Do Begin Readln(F,Line); ItemList.InsertItem(New(StrObjPtr,Init(Line))) End; Writeln; ItemList.PrintList; Writeln; Writeln; Writeln('-Bo nho sau khi doc tap tin: ',MemAvail,' bytes'); ItemList.DisposeList; Writeln; Writeln; Writeln('-Bo nho sau khi xoa bang Dispose: ',MemAvail,' bytes'); Writeln; Write(' Bam <Enter>. . . '); Readln END. 98/c b nh d liu: Code: Program ListDemo; Uses ListUtil; TYPE IntObjPtr = ^IntObj; IntObj = OBJECT(Item) I : Integer; Constructor Init(InitI : Integer); Procedure Print; Virtual; End; RealObjPtr = ^RealObj; RealObj = OBJECT(Item) R : Real; Constructor init(InitReal : Real); Procedure Print; Virtual; End; StrObjPtr = ^StrObj; StrObj = OBJECT(Item) St : ^String;

Constructor Init(InitStr : String); Destructor Done; Virtual; Procedure Print; Virtual; End; VAR ItemList : List; {--------------------------------} Constructor IntObj.Init; Begin Item.Init; I :=InitI; End; {--------------------------------} Procedure IntObj.Print; Begin Item.print; Write(' +So nguyen = ',i); End; {--------------------------------} Constructor RealObj.Init; Begin Item.Init; R := InitReal End; {--------------------------------} Procedure RealObj.Print; Begin Item.Print; Write(' +So thuc = ',r); End; {--------------------------------} Constructor StrObj.Init; Begin Item.Init; Getmem(St,Length(InitStr) +1); St^ := InitStr; End; {--------------------------------} Destructor StrObj.Done; Begin FreeMem(St,Length(St^) + 1); Item.Done; End; {--------------------------------} Procedure StrObj.print; Begin Item.Print; Write(' +Chuoi ky tu = ',St^); End; {--------------------------------} BEGIN ItemList.Init; Writeln('-Bo nho truoc khi chen du lieu: ',MemAvail,' bytes'); ItemList.InsertItem(New(IntObjPtr,Init(123)));

ItemList.InsertItem(New(RealObjPtr,Init(123.456))); ItemList.InsertItem(New(StrObjPtr,Init('Turbo Pascal 7.0'))); Itemlist.PrintList; Writeln; Writeln; Writeln('-Bo nho sau khi chen du lieu: ',MemAvail,' bytes'); ItemList.DisposeList; Writeln; Writeln; Writeln('-Bo nho sau khi xoa bang Dispose = ',MemAvail,' bytes'); Writeln; Write(' Bam <Enter> ... '); Readln END. 99/V hnh: Code: Program Ve_hinh; Uses Crt,Graph,Dos,Vehinh; TYPE Arc = OBJECT(Circle) StartAngle, EndAngle : Integer; Constructor Init(InitX,InitY,InitRadius, InitS,InitE:Integer); Procedure Show; Virtual; Procedure Hide; Virtual; End; VAR GrDriver, GrMode: Integer; Cung : Arc; C : Circle; P : Point; {-------------------------------------} Constructor Arc.Init; Begin Circle.Init(InitX,InitY,InitRadius); StartAngle := InitS; EndAngle := InitE; End; {-------------------------------------} Procedure Arc.Show; Begin Visible := True; Graph.Arc(X,Y,StartAngle,EndAngle,Radius); End; {-------------------------------------} Procedure Arc.Hide; Var TempColor : Word; Begin TempColor := Graph.GetColor; Graph.SetColor(GetBkColor); Visible := False; Graph.Arc(X,Y,StartAngle,EndAngle,Radius); SetColor(TempColor);

End; {-------------------------------------} BEGIN GrDriver := CGA; GrMode := CGAC0; InitGraph(GrDriver,GrMode,'C:\BP\BGI'); C.Init(151,82,50); Cung.Init(151,82,25,0,90); P.Init(151,82); P.Drag(5); Cung.Drag(5); C.Drag(5); CloseGraph END. 100/Phn s (dng 1): Code: UNIT PhanSo1; INTERFACE TYPE T_Dau = -1.. 1; T_PhanSo1 = OBJECT TuSo, MauSo : LongInt; Dau : T_Dau; CONSTRUCTOR KhoiDong; Procedure Doi(r : Real); Procedure ToiGian; Procedure Xuat; End;

IMPLEMENTATION CONST Max = 2147483647; R_min = 1E-10; CONSTRUCTOR T_PhanSo1.KhoiDong; Begin End; {--------------------------} Procedure T_PhanSo1.Doi(r : Real); Var PS : T_PhanSo1; Du : Real; Begin If ABS(r) > Max Then RunError(7); If r > 0 Then Dau := 1 Else Dau := -1; r := ABS(r); MauSo := 1;

Du := r - Int(r); While Du > R_Min Do Begin r := 10 * r; MauSo := 10 * MauSo; Du := r - Round(r); End; TuSo := Round(r); End; {--------------------------} Procedure T_PhanSo1.ToiGian; Var u : LongInt; Function USCLN(x, y : LongInt) : LongInt; Begin While NOT (x = y) Do If x > y Then x := x - y Else y := y -x; USCLN := x; End; Begin If TuSo = 0 Then Begin MauSo := 1; Dau := 0; Exit; End; u := USCLN(TuSo, MauSo); TuSo := TuSo Div u; MauSo := MauSo Div u; End; {--------------------------} Procedure T_PhanSo1.Xuat; Begin If MauSo = 1 Then Begin If Dau = -1 Then Write('-',TuSo) Else Write(TuSo); Exit End; If Dau = -1 Then Write('-',TuSo, '/', MauSo) Else Write(TuSo,'/',MauSo); End; END. 101/Nhp s liu cho 1 tp tin s nguyn:

Code: 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. 102/Ghp tp tin: Code: 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 CHO TAP1.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. 103/S tay in thoi: Code: Program So_tay_Dien_Tu; Uses Crt; Type DienThoai = RECORD HoTen : String[24]; Tel : LongInt; Add : String; End; Var f : File Of DienThoai; Tam : DienThoai; St : String; TimThay : Boolean; Begin ClrScr; Writeln('NHAP SO DIEN THOAI VA DIA CHI'); Writeln('-----------------------------'); Writeln; Assign(f,'Telephon.dat'); Rewrite(f); With tam Do Repeat Write('-Ho ten, bam (0> de ket thuc: '); Readln(HoTen); If HoTen <> '0' Then Begin Write('-So phone : '); Readln(Tel); Write('-Dia chi : '); Readln(Add); Write(f,tam); End; Until Hoten = '0'; Close(f); ClrScr; Writeln('TIM SO DIEN THOAI VA DIA CHI'); Writeln('----------------------------'); Writeln; Write('-Ho ten nguoi muon tim: ');

End.

Readln(St); Reset(f); TimThay := False; While NOT EOF(f) Do Begin Read(f,Tam); With Tam Do If St = HoTen then Begin TimThay := True; Writeln(HoTen); Writeln('-So Telephone: ',Tel); Writeln('-Dia chi : ',Add); End; End; If Not TimThay Then Writeln('Khong tim thay'); Close(f); Writeln; Write(' Bam <Enter>... '); Readln

104/Che du tp tin: Code: Program CheDau_TapTin; Uses Dos,Crt; Var f : File; {hoac f : Text } Filename : String; Ch : Char; Begin Repeat ClrScr; TextColor(14); TextBackGround(2); GotoXY(23,4); Writeln('DAT THUOC TINH CHE DAU TAP TIN'); GotoXY(23,5); Writeln('------------------------------'); Writeln; TextColor(12); GotoXY(11,6); Writeln('*Khong hien thi duoc ten tap tin khi dung lenh DIR cua DOS*'); GotoXY(15,8); TextColor(1); TextBackGround(14); Write('-Cho biet ten tap tin: '); Readln(Filename); TextColor(4+Blink); TextBackGround(14); GotoXY(25,24); Writeln('DANG THUC HIEN, XIN CHO DOI...'); Assign(f,Filename);

SetFAttr(f,Hidden); TextColor(4); TextBackGround(15); GotoXY(15,10); Case DosError Of 0 : Writeln('Da hoan thanh tot dep'); 2 : Writeln('Khong tim thay tap tin nay'); 3 : Writeln('Khong tim thay duong dan') Else Writeln('Tap tin duoc bao ve, khong sua duoc'); End; GotoXY(19,24); TextColor(14); TextBackGround(4); Writeln('Bam phim bat ky de tiep tuc, <Esc> de thoat '); Ch := Readkey; TextColor(White); TextBackGround(Black); ClrScr; Until Ch = #27; End. 105/Cp nht d liu: Code: Program Cap_Nhat_Du_Lieu; Uses Crt; Type HoSo = RECORD Holot : String[17]; Ten : String[7]; Tuoi : 18..60; ChucVu: String[20]; BacLuong : 300000..900000; End; Var f : File Of HoSo; Nv : HoSo; ans : Char; Begin ClrScr; Writeln('CAP NHAT DU LIEU VAO TAP TIN LUONG.DAT'); Writeln('----------------------------------'); Writeln; Assign(f,'LUONG.DAT'); Reset(f); Seek(f,Filesize(f)); Repeat With Nv Do Begin Write('-Ho lot: '); Readln(Holot); Write('-Ten : '); Readln(Ten); Write('-Tuoi : '); {$R+}

Readln(tuoi); Write('-Chuc vu : '); Readln(ChucVu); Write('-Bac luong: '); Readln(BacLuong); Write(f,Nv); End; ans := Readkey; Until ans = #27; Close(f); End. 106/c tp tin: Code: Program Doc_Tap_tin; Var f : Text; Filename : String; Ch : Char; Begin Writeln('DOC TAP TIN VAN BAN'); Writeln('-------------------'); Writeln; Write('-Cho biet ten tap tin: '); Readln(Filename); Assign(f,filename); Reset(f); While Not EOF(f) Do Begin Read(f,Ch); Write(Ch); End; Close(f); Writeln; Write('Bam <Enter>... '); Readln End. 107/c chm tp tin theo tng ch: Code: 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. 108/c ghi tp tin: Code: 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; Write(' 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. 109/To tp tin m thanh Lambada: Code: Program Lambada; Uses Crt; Var f : Text; Note,dur : Word; Buf : Array[1..10240] Of Byte; {---------------------------------} Procedure Play(Caodo,Truongdo : Word); Begin Sound(Caodo); Delay(Truongdo); NoSound; End; {---------------------------------} BEGIN ClrScr; TextColor(Yellow); Writeln('TAO TAP TIN AM THANH'); TextColor(Red); Writeln('--------------------'); Writeln; TextColor(Green); Writeln('Bam phim bat ky de tat am thanh'); Repeat Assign(f,'lambada.not'); SetTextBuf(f,buf); Reset(f); While (Not EOF(f)) And (Not KeyPressed) Do Begin Readln(f,Note,dur); Play(Note,Dur); End; Until KeyPressed; Close(f); NoSound; END. 110/Karaoke: Code: Program Karaoke; Uses Crt; Const Lento = 10; Type ConTro = ^Nhac; Nhac = RECORD Note,Dura : Word;

Next End; Var

: ConTro;

f : Text; P,First, Last,HeapTop : ConTro; {------------------------------------} Procedure AssignList(Filename : String); Begin Assign(f,Filename); {$I-} Reset(f); {$I+} If IOResult <> 0 Then Halt(1); First := Nil; Mark(HeapTop); While NOt EOF(f) Do Begin New(p); Readln(f,p^.Note,p^.Dura); If First = Nil Then First := p Else Last^.Next := p; Last := p; Last^.Next := Nil; End; Close(f); End; {------------------------------------} Procedure Music; Begin p := First; While (p <> Nil) And Not (KeyPressed And (Readkey = #27)) Do Begin Sound(p^.Note); Delay(Lento*p^.Dura); p := p^.Next; If p = Nil Then p := First; End; End; {------------------------------------} BEGIN ClrScr; Writeln(' CHUONG TRINH NHAC EM DIU'); Writeln('Truong do cham 10 lan so voi BT15_10'); Writeln(' Bam <Esc> de ket thuc'); Writeln('-------------------------------------'); AssignList('Lambada.Not'); Music; NoSound; END. 111/Ghi im vo tp tin: Code:

Program Nhap_Diem; Type HocBa = RECORD HoTen : String[24]; Van,Toan,Ly,Hoa,Tb: Real; End; FileHB = File Of HocBa; Var f : FileHB; HS : HocBa; q : Boolean; Begin Writeln('CHUONG TRINH GHI DIEM VAO TAP TIN'); Writeln('--------------------------------------'); Writeln; Assign(f,'DIEM.DAT'); ReWrite(f); q := True; While q Do With HS Do Begin Write('-Ho ten hoc sinh,(<Enter> de ket thuc): '); Readln(HoTen); If HoTen = '' Then Q := False Else Begin Write('-Diem Van : '); Readln(Van); Write('-Diem Toan: '); Readln(Toan); Write('-Diem Ly : '); Readln(Ly); Write('-Diem Hoa : '); Readln(Hoa); Tb := ((Van*2)+(Toan*2)+Ly+Hoa)/6; Write(f,HS); End; End; End. 112/Ghi thm im vo tp tin: Code: Program Nhap_Them_Diem; Type HocBa = RECORD HoTen : String[24]; Van,Toan,Ly,Hoa,Tb: Real; End; FileHB = File Of HocBa; Var f : FileHB; HS : HocBa; q : Boolean; Begin

Writeln('CHUONG TRINH GHI THEM DIEM VAO TAP TIN'); Writeln('--------------------------------------'); Writeln; Assign(f,'DIEM.DAT'); Reset(f); Seek(f,filesize(f)); q := True; While q Do With HS Do Begin Write('-Ho ten hoc sinh,(<Enter> de ket thuc): '); Readln(HoTen); If HoTen = '' Then Q := False Else Begin Write('-Diem Van : '); Readln(Van); Write('-Diem Toan: '); Readln(Toan); Write('-Diem Ly : '); Readln(Ly); Write('-Diem Hoa : '); Readln(Hoa); Tb := ((Van*2)+(Toan*2)+Ly+Hoa)/6; Write(f,HS); End; End; End. 113/Tm im theo h tn: Code: Program Timp_Diem; Type HocBa = RECORD HoTen : String[24]; Van,Toan,Ly,Hoa,Tb: Real; End; FileHB = File Of HocBa; Var f : FileHB; Hs : HocBa; St : String; TimThay : Boolean; Begin Writeln('CHUONG TRINH TIM DIEM THEO HO TEN'); Writeln('---------------------------------'); Writeln; Write('-Ho ten hoc sinh muon tim: '); Readln(St); Assign(f,'DIEM.DAT'); Reset(f); Timthay := False; While Not EOF(f) Do Begin

Read(f,Hs); With Hs Do If St = HoTen Then Begin TimThay := True; Writeln(HoTen); Writeln('-Diem Van : ',Van:5:2); Writeln('-Diem Toan: ',Toan:5:2); Writeln('-Diem Ly : ',Ly:5:2); Writeln('-Diem Hoa : ',Hoa:5:2); Writeln('-Diem trung binh := ',Tb:5:2); End End; If Not Timthay Then Writeln('Trong danh sach khong co hoc sinh: ',St); Close(f); Writeln; Write(' Bam <Enter>... '); Readln; End. 114/H s: Code: Program Ho_So; Uses Crt; Type LyLich = RECORD HoTen : String[24]; NamSinh : Integer; ChucVu : String[20]; BacLuong : Real; End; Var f : File Of LyLich; q : Boolean; Nv : LyLich; Stt : Integer; Ch : Char; Begin ClrScr; Assign(f,'HOSO.DAT'); Rewrite(f); q := True; While q Do With Nv Do Begin Write('-Ho ten CBCNV (<Enter> de ngung): '); Readln(HoTen); If HoTen = '' Then q := False Else Begin Write('-Nam sinh: '); Readln(NamSinh); Write('-Chuc vu: ');

End; Repeat GotoXY(28,24); Write('Co can sua khong? (c/k) '); Readln(Ch); If UpCase(Ch) = 'C' Then Begin Write('-Thay doi so thu tu : '); Readln(Stt); If Stt >= 1 Then Begin Seek(f,Stt-1); With Nv Do Begin Write('-Ho ten CBCNV : '); Readln(HoTen); Write('-Nam sinh: '); Readln(NamSinh); Write('-Chuc vu: '); Readln(Chucvu); Write('-Bac luong: '); Readln(BacLuong); Write(f,Nv); End; End; End; Until UpCase(Ch) = 'K'; Close(f) End. 115/Trn tp tin: Code: 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;

Readln(Chucvu); Write('-Bac luong: '); Readln(BacLuong); Write(f,Nv); End;

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. 116/i tuyn: Code: Program Doi_Tuyen; Uses Crt; Type HocSinh = RECORD HoTen : String[24]; Lop : String[4]; Dtb : Real; End; Fhs = File Of HocSinh; Var f : Fhs; Ch : Char; {----------------------------------}

Procedure Nhap(Var f : Fhs); Var Tam : HocSinh; Begin Rewrite(f); Repeat Write('-Nhap ho ten (0 de thoat): '); Readln(Tam.Hoten); If Tam.HoTen <> '0' Then Begin Write('-Lop: '); Readln(Tam.Lop); Write('-Diem trung binh: '); Readln(Tam.Dtb); Write(f,Tam); End; Until tam.HoTen ='0'; Close(f); End; {----------------------------------} Procedure Lapds(Var f:Fhs); Var Tam : Hocsinh; a : Array[1..1000] Of HocSinh; TenLop : Array[1..100] Of String[4]; alop : Array[1..200] Of HocSinh; Sohs12,Solop12,Sohslop : Integer; Stt : Integer; i,j,k : Integer; Coroi : Boolean; Begin Reset(f); Sohs12 := 0; Solop12 := 0; While Not EOF(f) Do Begin Read(f,tam); If (Tam.Lop[1]='1') And (Tam.Lop[2]='2') Then Begin Sohs12 := Sohs12 + 1; a[Sohs12] := Tam; Coroi := False; For i := 1 To Solop12 Do If Tenlop[i] = Tam.Lop Then Coroi := True; If Not coroi Then Begin Solop12 :=Solop12+1; TenLop[Solop12] := Tam.Lop; End; End; End; Writeln('|','STT','|','HO VA TEN':24,'|',' LOP ','|',' ','|'); Stt := 1;

HANG

For i := 1 to Solop12 Do Begin Sohslop := 0; For j := 1 To Sohs12 Do If a[j].Lop = Tenlop[i] Then Begin Sohslop := Sohslop + 1; alop[sohslop]:=a[j]; End; For k := 1 To Sohslop - 1 Do For j := sohslop DownTo k + 1 Do If alop[j].Dtb > alop[j-1].Dtb Then Begin Tam := alop[j]; alop[j] := alop[j-1]; alop[j-1] := Tam; End; If Sohslop >=3 Then For k := 1 To 3 Do Begin With alop[k] Do Writeln('|',stt:3,' |',HoTen:24,' | ', Lop:5,' | ',k : 3,' |'); Stt := Stt + 1; End Else For k := 1 To Sohslop Do Begin With alop[k] Do Writeln('|',stt:3,' |',HoTen:24,' | ', Lop:5,' | ',k : 3,' |'); Stt := Stt + 1; End; End; Close(f); End; {----------------------------------} BEGIN Assign(f,'doituyen.dat'); Repeat Repeat Writeln('1-Nhap du lieu'); Writeln('2-Danh sach doi du tuyen'); Writeln('3-Ket thuc'); Ch := Readkey; Until ch in ['1'..'3']; Case Ch Of '1' : Nhap(f); '2' : Lapds(f); End; Until Ch = '3'; END. 117/To tp tin c kiu: Code:

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); End; {-------------------------------} BEGIN TaoTapTin;

Writeln; XemLaiBanGhi; Writeln; Write(' Bam <Enter>... '); Readln; END. 118/To danh sch: Code: Program Tao_Danh_Sach; Type HocSinh = RECORD Ten : String[7]; Diem : 0..10; End; T_pList = ^T_List; T_List = RECORD d : HocSinh; Next : T_pList; End; Var f : File Of Hocsinh; First : Pointer; Curr, News : T_pList; {-------------------------------} Procedure MoTapTin; Var Filename : String; Begin Write('-Cho biet ten tap tin: '); Readln(Filename); Assign(f,Filename); {$I-} Reset(f); {$I+} If IOResult <> 0 Then Begin Writeln('Khong mo duoc tap tin: ',Filename); Halt; End; End; {-------------------------------} Procedure DocVaoList; Begin First := Nil; While NOt EOF(f) Do Begin New(News); News^.Next := Nil; Read(f,News^.d); If First = Nil Then First := News Else

Curr^.Next := News; Curr := News; End; Close(f); End; {-------------------------------} Procedure Xem; Begin Curr :=First; While Curr <> Nil Do Begin Writeln('-Ten: ',Curr^.D.Ten : 6, #32:10, '-Diem : ',Curr^.D.Diem); Curr := Curr^.Next; End; End; {-------------------------------} BEGIN MoTapTin; Writeln; DocVaoList; Writeln; Xem; Writeln; Write(' Bam <Enter>... '); Readln; END. 119/D on bng : Code: Program Du_Doan_Bong_Da; Type Doi = RECORD Diem,hlv,tm,hv,ct,sb : Real; Ten : String[24]; Hang : Integer; End; Filedb = file Of Doi; Mang = Array[1..40] Of Doi; Var f : Filedb; i,j,n : Integer; a : Mang; t : Doi; q : Boolean; Begin i := 1; q := True; While q Do With a[i] Do Begin Write('-Ten doi (bam <Enter> de ngung): '); Readln(Ten); If Ten = '' Then q := False

Else

End; n := i - 1; For i := 1 To N - 1 Do For j := 1 To N - i Do If a[j].Diem < a[j+1].Diem then Begin t :=a[j]; a[j] := a[j+1]; a[j+1] := t; End; Assign(f,'diemdb.dat'); Rewrite(f); For i := 1 to N Do Begin If (i > 1) And (a[i].Diem = a[i-1].Diem) Then a[i].Hang := a[i-1].Hang Else a[i].Hang := i; Write(f,a[i]); End; Close(f); End. 120/Ct tp tin: Code: Program Cat_Tap_tin; Var f,g1,g2 : File; Buf : Array[1..63000] Of Byte; Trungdiem : LongInt;

Begin Repeat Write('=Diem Readln(hlv); Until hlv <=30; Repeat Write('=Diem Readln(tm); Until tm <= 15; Repeat Write('=Diem Readln(hv); Until hv <= 30; Repeat Write('=Diem Readln(ct); Until ct <= 50; Repeat Write('=Diem Readln(sb); Until sb <= 20; Diem := hlv + hv i := i + 1; End;

huan luyen vien: ');

thu mon: ');

hau ve: ');

cac cau thu khac: ');

thuan loi san bai: '); + tm + ct + sb;

{-------------------------------------} 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;

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. 121/Tao menu: Code: 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): ');

Var

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(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);

Readln; End; {----------------------------------} 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

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(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;

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. 122/ dai ca dng: Code: Program D0_Dai_Cua_Dong; Var f : Text; Filename : String[12]; St : String; Max,Min: Integer; Sodong,Tong : Integer; Begin Write('-Cho biet ten tap tin: '); Readln(Filename); Assign(f,Filename); Reset(f); Readln(f,St); Max := length(St); Min := Length(St); Sodong := 1; Tong := Length(St); While Not EOF(f) Do Begin Readln(f,St); If Max < Length(St) Then Max := Length(St); If Min > Length(St) Then Min := Length(St); Sodong := sodong + 1; Tong := Tong + Length(St); End; Writeln('-Dong dai nhat : ',Max); Writeln('-Dong ngan nhat : ',Min); Writeln('-Trung binh : ',Tong / Sodong : 6:1); Writeln; Write('Bam <Enter>... '); Readln End. 123/im Sn phm: Code:

Program Diem_San_Pham; Uses Crt; Var f : Text; Nhom : Char; d1,d2 : Real; TongA1,TongA2 : Real; TongB1,TongB2 : Real; TongC1,TongC2 : Real; SoA,SoB,SoC : Integer; i : Integer; Begin Assign(f,'sanpham.txt'); Rewrite(f); Writeln(f,'Nhom nguoi',' San pham 1 ',' San pham 2 '); Writeln(f); ClrScr; Repeat Write('Nhom nguoi ($ de thoat): '); Readln(Nhom); If Nhom <> '$' Then Begin Write('-Diem san pham 1 : '); Readln(d1); Write('-Diem san pham 2 : '); Readln(d2); Writeln(f,Upcase(Nhom):6,d1:16:1,d2:16:1); End; Until Nhom = '$'; Close(f); ClrScr; Reset(f); Readln(f); Readln(f); TongA1 := 0;TongA2 := 0;SoA := 0; TongB1 := 0;TongB2 := 0;SoB := 0; TongC1 := 0;TongC2 := 0;SoC := 0; While Not EOF(f) Do Begin For i := 1 To 6 Do {So vong lap bang vi tri cua nhom } Read(f,Nhom); Readln(f,d1,d2); Case Nhom Of 'A' : Begin TongA1 := TongA1 + d1; TongA2 := TongA2 + d2; SoA := SoA + 1; End; 'B' : Begin TongB1 := TongB1 + d1; TongB2 := TongB2 + d2; SoB := SoB + 1; End; 'C' : Begin TongC1 := TongC1 + d1;

End.

End; End; ClrScr; Writeln('NHOM NGUOI',' TB San pham 1',' TB San pham 2'); Writeln; If SoA <> 0 Then Writeln('A':6,TongA1/SoA:16:1,TongA2/SoA:16:1); If SoB <> 0 Then Writeln('B':6,TongB1/SoB:16:1,TongB2/SoB:16:1); If SoC <> 0 Then Writeln('C':6,TongC1/SoC:16:1,TongC2/SoC:16:1); Readln

TongC2 := TongC2 + d2; SoC := SoC + 1; End;

124/m ch: Code: Program DemChu; Uses Crt; Type MangChu = Array[Char] Of Integer; Var f : Text; Filename : String; Line : String[25]; Chu : 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. 125/To tp tin vn bn: Code: Program Tao_Tap_Tin_Van_Ban; Var f : Text; Filename : String; {---------------------------------} Procedure Timvb(Var f: text; n : Word); Var i : Word; Begin Reset(f); For i :=1 To n Do Readln(f); End; {---------------------------------} Procedure MoTapTin; Begin Write('-Cho biet ten tap tin van ban: '); Readln(Filename); {$I-} Assign(f,Filename); Rewrite(f); If IOResult <> 0 Then Begin Writeln('Khong the mo tap tin moi: '+Filename+' '); Halt; End; End; {---------------------------------} Procedure Nhap4dong; Var Tam : String; i : Byte; Begin Writeln; Writeln; For i := 1 to 4 Do Begin Write('-Nhap dong thu: ',i:2,' : '); Readln(Tam); Writeln(f,Tam); End;

End; {---------------------------------} Procedure Xuatdong2; Var Tam : String; Begin Timvb(f,2); Readln(f,Tam); Writeln('Dong thu 3 cua tap tin co noi dung la: '); Writeln; Writeln(' ',Tam); End; {---------------------------------} BEGIN MoTapTin; Nhap4dong; Writeln; Xuatdong2; Writeln; Write(' Bam <Enter>... '); Readln; END. 126/Xa dng tp tin vn bn: Code: Program Xoa_Dong_Tap_Tin_Van_Ban; Var f : Text; Filename : String; {---------------------------------} Procedure MoTapTin; Var Tam : String; i : Byte; Begin Write('-Cho biet ten tap tin van ban: '); Readln(Filename); {$I-} Assign(f,Filename); Rewrite(f); {$I+} If IOResult <> 0 Then Begin Writeln('Khong the mo tap tin moi: '+Filename+' '); Halt; End; For i := 1 to 4 Do Begin Write('-Nhap dong thu: ',i:2,' : '); Readln(Tam); Writeln(f,Tam); End; Close(f); End; {---------------------------------}

Procedure XemTapTin(Var f : Text); Var Tam : String; Begin Reset(f); While Not EOF(f) Do Begin Readln(f,Tam); Writeln(Tam); End; End; {---------------------------------} Procedure Xoadong(Var f : Text; n : Word); Var g : Text; Tam : String; i : Word; Begin Assign(g,Filename); Reset(g); Assign(f,'XOADONG.TXT'); Rewrite(f); i := 0; While Not EOF(g) Do Begin Readln(g,Tam); If i <> n Then Writeln(f,Tam); Inc(i); End; Close(f); End; {---------------------------------} BEGIN MoTapTin; Writeln; Writeln(' Noi dung tap tin da tao'); Writeln; XemTaptin(f); Writeln; Xoadong(f,2); Writeln(' Noi dung con lai sau khi xoa dong 3'); Writeln; XemTapTin(f); Writeln; Write(' Bam <Enter>... '); Readln; END. 127/Xa ch thch: Code: Program Xoa_chu_thich; Var Filename : String;

f,fn : Text; Ch : Char; Begin Write('-Ten tap tin Pascal: '); Readln(Filename); Assign(f,Filename); Assign(fn,'new.pas'); reset(f); Rewrite(fn); While not EOF(f) Do Begin Read(f,ch); If Ch <> '{' Then Write(fn,ch) Else Repeat Read(f,ch); Until (Ch = '}') Or EOF(f); End; Close(f); Close(fn); Writeln; Write('Da thuc hien xong, bam <Enter>... '); Readln; End. 128/Tm chui k t: Code: 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. 129/X l dng: Code: 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. 130/Chy ch: Code: Program Chay_Chu; Uses Crt; Var St : String; n,i,j : Integer; Begin ClrScr; Write('Nhap mot chuoi ky tu: '); Readln(St); ClrScr; n := 40-(Length(St) Div 2); For j := 1 To Length(St) Do

For i := 80 DownTo n+j Do Begin GotoXY(i,12); Write(St[j]); ClrEoL; Sound(400+j*200); Delay(30); Nosound; End; Readln; End. 131/ng thng: Code: Program Duong_Thang; Uses Graph; Var Gd,Gm,k : Integer; Begin Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); SetBkColor(Blue); k := -300; Repeat SetColor(14); MoveTo(160,100); LineRel(k,100); LineRel(k,-100); MoveTo(160,100); LineRel(k,-100); LineRel(k,100); k := k+15; Until k = 0; Repeat Line(k,0,k,200); k := k-15; Until k = 0; Line(0,100,320,100); Readln; CloseGraph; End. 132/Chm ng thng ng quy: Code: Program Chum_duong_thang_dong_quy; Uses Crt,Graph; Var Palette : PaletteType; Gd,Gm,k,i : Integer; Color : Word; Tri : String[4]; Begin

Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); Str(GetColor: 2,Tri); OutTextXY(10,10,Tri); With Palette Do Begin Size := 4; Colors[0] := White; Colors[1] := Red; Colors[2] := Blue; Colors[3] := Magenta; SetAllPalette(Palette); End; SetBkColor(LightBlue); Randomize; k := 1; Repeat Color := Succ(GetColor); If Color > Palette.Size Then Color := 2; SetColor(Color); i := k Mod 4; SetLineStyle(i,0,3); LineTo(Random(GetMaxX),Random(GetMaxY)); Delay(100); k := k+1; Until k =15; SetColor(1); OutTextXY(10,100,'Chao mung nam 2000'); Delay(2000); CloseGraph; End. 133/a gic: Code: Program Da_Giac; Uses Graph; Const M : Array[0..5] Of PointType = ((x:0;y:10),(x:53;y:29), (x:112;y:134),(x:65;y:100),(x:34;y:100),(x:0;y:10)); Var Gd,Gm : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); DrawPoly(7,M); Readln; CloseGraph; End. 134/Vng Olympic: Code: Program Vong_Olympic; Uses Graph; Var

Gd,Gm:Integer; MaxX,MaxY:Integer; R : Integer; Y1,Y2 : Integer; X1,X2,X3,X4,X5 : Integer; Kc : Integer; Begin Write('-Ban kinh = '); Readln(R); Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOK Then Halt(1); MaxX := GetMaxX; MaxY := GetMaxY; Y1 := (MaxY - 3*R) Div 2 + R; Y2 := Y1 + R; Kc := R Div 5; X1 := (MaxX - 6*R -2*Kc) Div 2 + R; X2 := X1 + Kc + 2*R; X3 := X2 + Kc + 2*R; X4 := X1 + R + (Kc Div 2); X5 := X2 + R + (Kc Div 2); SetColor(14); Circle(X1,Y1,R); Circle(X2,Y1,R); Circle(X3,Y1,R); Circle(X4,Y2,R); Circle(X5,Y2,R); Readln; CloseGraph; End. 135/Hnh qut: Code: Program Hinh_Quat; Uses Graph; Var Gd,Gm : Integer; CenterX,CenterY,Radius : Word; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); SetGraphMode(0); SetBkColor(Blue); CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; Radius := CenterY - 10; SetFillStyle(2,2); Pieslice(CenterX,CenterY,0,120,Radius); SetFillStyle(3,1); Pieslice(CenterX,CenterY,120,245,Radius); SetFillStyle(4,3);

Pieslice(CenterX,CenterY,245,360,Radius); Readln; CloseGraph; End. 136/Biu ct: Code: Program Bieu_Do_Cot; Uses Graph; Const h = 60; Var Gd,Gm : Integer; Socot : Integer; a : Array[1..100] Of Integer; Max : Integer; i : Integer; Mx,My : Integer; Xstep,Ystep : Integer; x : Integer; Begin Write('-Tong so cot: '); Readln(Socot); For i := 1 To Socot Do Begin Write(' +Cot thu : ',i:2,' = '); Readln(a[i]); End; Max := a[1]; For i := 2 To Socot Do If a[i] > Max Then Max := a[i]; Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); Mx := GetMaxX; My := GetMaxY; Rectangle(0,0,Mx,My); Line(h,h,h,My-h); Line(h,My-h,MX-h,My-h); Xstep := Round((Mx-3*h)/Socot); Ystep := Round((My-2*h)/Max); x := h; For i := 1 To Socot Do Begin SetFillStyle(i,i); Bar(x,(My-h)-a[i]*Ystep,x+Xstep,My-h); Rectangle(x,(My-h)-a[i]*Ystep,x+Xstep,My-h); x := x + Xstep; End; Readln; CloseGraph; End. 137/Biu PIE: Code:

Program Bieu_Do_PIE; Uses Graph; Var Gd,Gm : Integer; Somuc : Integer; a : Array[1..100] Of Real; Tong,Goc : Real; r,i : Integer; Begin Write('-Tong so muc: '); Readln(Somuc); Tong := 0; For i := 1 To Somuc Do Begin Write(' +Muc thu : ',i:2,' = '); Readln(a[i]); Tong := Tong + a[i]; End; For i := 1 To Somuc Do a[i]:=(a[i]/Tong)*360; Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); R := GetMaxY Div 3; Rectangle(0,0,GetMaxX,GetMaxY); Goc := 0; For i := 1 To Somuc Do Begin SetFillStyle(i,i); PieSlice(GetMaxX Div 2, GetMaxY Div 2,Round(Goc),Round(Goc+a[i]),R); Goc := Goc + a[i]; End; Readln; CloseGraph; End. 138/ th: Code: Program Do_Thi; Uses Graph; Var Gd,Gm,j,mx,my : Integer; i,x,y : Real; Xasp,Yasp,CenterX,CenterY : Word; Pattern : Word; Palette : PaletteType; {----------------------------------} Function Adjasp(Value: Integer) : Integer; Begin Adjasp := (LongInt(Value)*Xasp) Div Yasp; End; {----------------------------------} BEGIN

Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt; SetGraphMode(0); SetBkColor(Blue); GetPalette(Palette); SetAllPalette(Palette); GetAspectRatio(Xasp,Yasp); CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; SetTextJustify(CenterText,CenterText); SetColor(2); Line(0,CenterY,GetMaxX-25,CenterY); Line(CenterX,20,CenterX,GetMaxY); OutTextXY(CenterX-10,CenterY+5,'0'); OutTextXY(GetMaxX-16,CenterY,'>X '); SetTextStyle(DefaultFont,VertDir,0); OutTextXY(CenterX,18,'>'); SetTextStyle(DefaultFont,HorizDir,0); OutTextXY(CenterX,8,'Y'); i := 0; SetColor(2); While i <= GetMaxX Do Begin x :=(i-160)/20; mx := Round(i); y := (sin(x))*(Sin(x))*(Sin(x)); my := CenterY - Adjasp(Round(y*20)); If abs(my) < 200 Then PutPixel(mx,my,14); i := i+(2/7); End; Rectangle(CenterX+10,CenterY+10,GetMaxX-10,GetMaxY-15); SetViewPort(CenterX+9,CenterY+9,GetMaxX-9,GetMaxY-16,ClipOn); SetTextStyle(2,0,4); OutTextXY(48,12,'He truc toa do'); SetTextStyle(1,0,3); OutTextXY(60,40,'DESCARTES'); Readln; CloseGraph; END. 139/C chp ming: Code: Program Ca_Chep_Mieng; Uses Crt,Graph; Var Gd,Gm : Integer; Active,Visual,Temp:Word; Xcenter,YCenter,Radius,StAngle,EndAngle : Integer; {--------------------------------} Procedure Initialize; Begin Gd := Detect;

InitGraph(Gd,Gm,'C:\BP\BGI'); SetColor(Red); SetFillStyle(SolidFill,Blue); Xcenter := GetMaxX Div 2; YCenter := GetMaxY Div 2; StAngle := 15; Radius := GetMaxY Div 8; Active := 0; Visual := 1; End; {--------------------------------} Procedure Veca; Begin if StAngle = 15 Then {ve bung ca} Begin StAngle := 30; EndAngle := 330; End Else Begin StAngle := 15; EndAngle := 345; End; PieSlice(Xcenter,YCenter,StAngle,EndAngle,Radius); {ve mat ca} Circle(Xcenter+Radius Div 2,YCenter - Radius Div 2,4); {ve duoi ca} Line(Xcenter-Radius,Ycenter,Xcenter-2*Radius,Ycenter-Radius); Line(Xcenter-Radius,Ycenter,Xcenter-2*Radius,Ycenter+Radius); End; {--------------------------------} BEGIN Initialize; While Not KeyPressed Do Begin SetActivePage(Active); SetvisualPage(Visual); Veca; Temp := Active; Active := Visual; Visual := Temp; End; END. 140/m thanh: Code: Program Am_thanh; Uses Crt; CONST Notdon=8*58; Notdoi=Notdon Div 2; TYPE Notnhac=(c,cf,d,df,e,f,ff,g,gf,a,af,b); Var Kyam:Notnhac;

(*----------------------*) PROCEDURE Bannhac(Kyam:Notnhac;Caodo,Truongdo:Integer); Var Tanso:Real; i:Integer; Begin Tanso:=32.625; For i:=1 To Caodo Do Tanso:=Tanso * 2; For i:=1 To Ord(Kyam) Do Tanso:=Tanso * 1.05946; If Truongdo <> 0 Then Begin Sound(Round(Tanso)); Delay(Truongdo); NoSound End Else Sound(Round(Tanso)) End; (*----------------------*) BEGIN Bannhac(c,4,Notdon); Bannhac(f,4,Notdon); Bannhac(g,4,Notdon); Bannhac(a,4,Notdon); Bannhac(a,4,Notdon); END. 141/3 cnh ca tam gic: Code: Program Tam_giac; Var a,b,c:Integer; tamgiac,deu,can:Boolean; Begin Writeln('BA CANH CUA TAM GIAC ?'); Writeln('----------------------'); Write('-Nhap so thu nhat= '); Readln(a); Write('-Nhap so thu hai = '); Readln(b); Write('-Nhap so thu ba = '); Readln(c); tamgiac:=False; deu:=False; can:=False; If (a+b>c) And (b+c>a) And (c+a>b) Then Begin tamgiac:=True; If (a=b) And (b=c) Then deu:=True; If (a=b) Or (b=c) Or (c=a) Then can:=True; End;

Writeln; Writeln(' 3 so vua nhap la:'); Writeln('+Tam giac: ',tamgiac); Writeln('+Tam giac deu: ',deu); Writeln('+Tam giac can: ',can); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 142/Bi ton c in: Code: Program Tram_trau; Var dung,nam,gia,co,trau:Integer; Begin Writeln('BAI TOAN CO DIEN'); Writeln('Tram trau tram co'); Writeln('Trau dung an 5'); Writeln('Trau nam an 3'); Writeln('Ba trau gia an 1'); Writeln('----------------'); Writeln(' Bai toan nay co cac loi giai sau'); For dung:=0 To 20 Do For nam:=0 To 33-dung Do For gia:=0 To (100-(dung+nam)) Do Begin co:=5*dung+3*nam+(gia Div 3); trau:=dung+nam+gia; If (gia Mod 3 =0) And (trau=100) And ( co=100) Then Writeln('-Trau dung ',dung,' con, -Trau nam ',nam,' con, -Trau gia ',gia,' con'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 143/Cc hm lng gic: Code: Program Cac_ham_luong_giac; CONST g='|'; ke='--------------------------------------------------'; Ten=' CAC HAM LUONG GIAC'; Tde='|DO | RADIAN | SIN | COSIN | TANG | COTANG |'; Var Doo:1..89; Rad,s,c,t,ct:Real; Begin Repeat Write('-Nhap do (tu 1 den 89, so 0 de ngung): '); Readln(Doo); If Doo= 0 Then

Exit; Writeln(Ten); Writeln(ke); Writeln(Tde); Writeln(ke); Rad:=Doo*Pi/180; s:=Sin(rad); c:=Cos(Rad); t:=s/c; ct:=c/s; Writeln(g,Doo:2,#248,g,Rad:8:6,g,s:8:6,g, c:8:6,g,t:8:5,g,ct:8:5,g); Writeln(ke); Writeln; Until Doo=0; End. 144/Bi ton g, ch: Code: Program ga_cho; Var x,y,n:Integer; Begin n:=1; Writeln('* CAC LOI GIAI BAI TOAN CO DIEN GA,CHO'); Writeln('----------------------------------'); For x:=1 To 36 Do For y:=1 To (36-x) Do If ((x*2)+(y*4) =100) then {and ((x+y) =36) Then} Begin Writeln(' * Loi giai thu : ',n:3); Write('- Ga = ',x:2,' con = ',(x*2):2,' chan '); Write('- Cho = ',y:2,' con = ',(y*4):2,' chan '); If x+y<36 Then Writeln('Ga+Cho= ',x+y:2,' con,khong dung') Else If x+y=36 Then Writeln('Ga+Cho= ',x+y:2,' con,loi giai dung'); n:=n+1; End; Writeln(' * Tong cong co: ',(n-1):3,' loi giai'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 145/Cc nguyn m, ph m trong 1 chui: Code: Program Nguyen_am_Phu_am; TYPE Kytu=Set of Char; Var a,b,Nguyen,Phu:Kytu; Chuoi:String; i:Integer;

Ch:Char; Begin Writeln('CAC NGUYEN AM, PHU AM TRONG MOT CHUOI'); Writeln('-------------------------------------'); Write('-Nhap mot chuoi ky tu: '); Readln(Chuoi); a:=['a','e','i','o','u','A','E','I','O','U']; b:=['a'..'z','A'..'Z'] - a; Nguyen:=[]; Phu:=[]; For I:=1 To Length(Chuoi) Do Begin If Chuoi[i] In a Then Nguyen:=Nguyen + [Chuoi[i]]; If Chuoi[i] In b Then Phu:=Phu +[Chuoi[i]]; End; Writeln; Writeln('*Chuoi nay co cac nguyen am sau day:'); Write(' '); For Ch:='A' To 'z' Do If Ch In Nguyen Then Write(Upcase(ch),', '); Writeln; Writeln('*Chuoi nay co cac phu am sau day:'); Write(' '); For Ch:='A' To 'z' Do If Ch In Phu Then Write(Upcase(Ch),', '); Writeln; Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End. 146/Cc php ton trong tp hp: Code: Program Cac_phep_Toan; TYPE KyTu=Set of Char; Var a,b,Cong,Nhan,tru1,tru2:KyTu; p:Array[1..100] Of Char; m,n,i:Byte; Begin Writeln('CAC PHEP TOAN TRONG TAP HOP'); Writeln('---------------------------'); a:=[]; b:=[]; Write('-So phan tu cua tap hop A= '); Readln(m); For i:=1 To M Do Begin Write(' -Phan tu A[',i,']= '); Readln(p[i]);

a:=a + [p[i]]; End; Write('-So phan tu cua tap hop B= '); Readln(n); For i:=1 To N Do Begin Write(' -Phan tu B[',i,']= '); Readln(p[i]); b:=b + [p[i]]; End; Nhan:=a * b; Writeln('A * B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Nhan Then Write(Char(i),#32); Writeln; Cong:=a + b; Writeln('A + B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Cong Then Write(Char(i),#32); Writeln; Tru1:=a - b; Writeln('A - B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Tru1 Then Write(Char(i),#32); Writeln; Tru2:=b - a; Writeln('B - A gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Tru2 Then Write(Char(i),#32); Writeln; If A <= B Then Writeln('-Tap hop A nho hon tap hop B'); If B <= A Then Writeln('-Tap hop B nho hon tap hop A'); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End. 147/Cc php ton: Code: Program Cac_phep_toan; Var a,b,c,d,e,x,y,g,h,i:Integer; Begin Writeln('CAC PHEP TOAN'); Writeln('-------------'); Writeln; a:=124; b:=12; Writeln(a:3,' DIV ',b:2,' = ',a DIV b);

Writeln(a:3,' MOD ',b:2,' = ',a MOD b); c:=12; d:=22; Writeln(c:2,' AND ',d:2,' = ',c AND d); Writeln(c:2,' OR ',d:2,' = ',c OR d); Writeln(c:2,' XOR ',d:2,' = ',c XOR d); x:=2; g:=x Shl 7; Writeln('g = ',x:2,' Shl 7 = ',g); x:=256; h:=x Shr 7; Writeln('h = ',x:2,' Shr 7 = ',h); i:=g+h; Writeln('i = g + h = ',i); Writeln('Lo(i) = ',Lo(i)); Writeln('Hi(i) = ',Hi(i)); Writeln('Swap(i) = ',Swap(i)); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 148/Cc s nguyn t: Code: Program So_nguyen_to; Var NguyenTo,Sang:Set of 1..100; so:1..100; i:Integer; Begin Writeln(' CAC SO NGUYEN TO TU 1 DEN 100'); Writeln(' -----------------------------'); Writeln; NguyenTo:=[]; Sang:=[2..100]; So:=2; Repeat While Not (So In Sang) Do So:=So+1; NguyenTo:=NguyenTo + [So]; Write(So,' '); I:=So; While I <= 100 Do Begin Sang:=Sang -[I]; I:=I + So; End; Until Sang=[]; Writeln; Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End. 149/Cho bit ngy hm nay s tnh c ngy mai: Code:

Program Ngay_mai_la_ngay_may; Var Nam:1900..2000; Thang:1..12; Ngay:1..31; Begin Writeln('CHO BIET NGAY HOM NAY SE TINH DUOC NGAY MAI'); Writeln('-------------------------------------------'); Repeat Write('-Cho biet ngay ( so 0 de ngung): '); Readln(Ngay); If Ngay = 0 Then Exit; Write('-Cho biet thang: '); Readln(Thang); Write('-Cho biet nam: '); Readln(Nam); Case Thang Of 1,3,5,7,8,10,12 : If Ngay < 31 Then Ngay:=Ngay+1 Else If Thang = 12 Then Begin Nam:=Nam+1; Thang:=1; End Else Begin Thang:=Thang+1; Ngay:=1; End; 4,6,9,11 : If Ngay < 30 Then Ngay:=Ngay+1 Else Begin Thang:=Thang+1; Ngay:=1; End; 2: If (Ngay < 28) Or ((Ngay=28) And (Nam Mod 4 = 0)) then Ngay:=Ngay+1 Else Begin Thang:=Thang+1; Ngay:=1; End; End; Writeln; Writeln('+Ngay mai la ngay: ',Ngay:2,' / ',Thang:2,' / ',Nam:4); Writeln; Until Ngay=0; End. 150/Chn loi gii tr thch hp: Code: Program Giai_Tri;

Var

t:Byte; Begin Writeln('CHON LOAI GIAI TRI THICH HOP'); Writeln('----------------------------'); Write('-Cho biet nhiet do ngay hom nay: '); Readln(t); If t < 20 Then Writeln('Troi lanh, ban nen o nha coi TV'); If ((t > 20) And (t < 25)) Then Writeln('Troi mat me, ban nen di cam trai'); If ((t > 25) And (t < 30)) Then Writeln('Troi hoi nong, ban nen di tam bien Vung Tau'); If t > 30 Then Writeln('Troi nong, ban nen di nghi mat o Da Lat'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. 151/Chay ch 2: Code: Program Chu_Chay; Uses Crt; Const a='Nha sach Minh Khai, 249 Nguyen Thi Minh Khai, Quan 1, Tp Ho Chi Minh '; b='Tel: 8 331 124, 9 250 590 '; c='Chuyen phat hanh cac giao trinh tin hoc phuc vu hoc sinh, sinh vien'; d='Chan thanh cam on quy doc gia'; Function Lap(Kt:Char; N:Integer): String; Var Tam:String; K:Integer; Begin Tam:=' '; For K:=1 To N Do Tam:=Tam+Kt; Lap:=Tam; End; {--------------} Procedure WriteXY(X,Y:Integer; St:String); Begin GotoXY(X,Y); Write(St); End; {--------------} Function Min(a,b:Integer):Integer; Begin If a < b Then Min:=a Else Min:=b; End; {--------------} Procedure Chuchay(St:String); Var k:Integer; Tin:String; Begin Tin:=Lap(' ',68)+'<<' +St+' '; For k:=1 To Length(Tin) Do Begin TextColor(k MOD 16); WriteXY(6,8,Copy(Tin,k,Min(68,Length(Tin)-k+1))); Delay(100); End; End; {--------------} Procedure Khung(x1,y1,x2,y2:Integer); Var k:Integer; Begin TextColor(14); WriteXY(x1,y1,#201); For k:=x1+1 To x2-1 Do Write(#205); Write(#187); WriteXY(x1,y2,#200); For k:=x1+1 To x2-1 Do Write(#205); Write(#188); For k:=y1+1 To y2-1 Do Begin WriteXY(x1,k,#186); WriteXY(x2,k,#186); End; End; {--------------} BEGIN TextBackGround(1); ClrScr; TextColor(3+Blink); GotoXY(30,4); Writeln('NAM HOC 1999 -2000'); Khung(5,7,75,9); Repeat Chuchay(a); Chuchay(b); Chuchay(c); Chuchay(d); Until KeyPressed; END.

152/Chui i x ng: Code:

Program Chuoi_Doi_Xung; Var St:String; i,l:Byte; Begin Writeln('CHUOI DOI XUNG'); Writeln(' --------'); Write('-Nhap chuoi: '); Readln(St); l:=Length(St); i:=1; While (i < l Div 2) And (St[i] = St[l-i+1]) Do Begin i:=i+1; If i < (l Div 2) Then Writeln('+Chuoi nay doi xung') End; While (i < l Div 2) And (St[i] <> St[l-i+1]) Do Begin i:=i+1; If i < (l Div 2) Then Writeln('+Chuoi nay khong doi xung') End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

153/Phep tr : Code: Program Phep_Tru; Var so1,so2,hieu :Integer; Begin Writeln(' CHUONG TRINH THUC HIEN PHEP TRU SO HOC'); Writeln(' co toi da 4 ky so'); Write('Nhap so thu nhat = '); Readln(so1); Write('-Nhap so thu hai = '); Readln(so2); hieu:= so1-so2; Writeln; Writeln; Writeln('-------------------------------'); Writeln; Writeln(' ',so1:4); Writeln(' ',so2:4); Writeln(' -----'); Writeln(' = ',hieu:5); Readln End.

154/Din tich hinh thang: Code: Program Hinh_thang; Var a,b,h:Integer; S:Real; Begin Writeln('CHUONG TRINH TINH DIEN TICH HINH THANG'); Write('-Cho biet day ngan = '); Readln(a); Write('-Cho biet day dai = '); Readln(b); Write('-Cho biet chieu cao = '); Readln(h); S := 0.5 * (a + b) * h; Writeln('+Dien tich hinh thang = ',s:6:2,' met vuong'); Readln End.

155/Din tich tam giac: Code: Program Tam_Giac; Var a,b,c:Integer; p,s:Real; Begin Writeln('CHUONG TRINH TINH DIEN TICH TAM GIAC'); Write('-Cho biet canh thu nhat = '); Readln(a); Write('-Cho biet canh thu hai = '); Readln(b); Write('-Cho biet canh thu ba = '); Readln(c); p := 0.5 * (a + b + c); s := sqrt(p*(p-a)*(p-b)*(p-c)); Writeln('+Dien tich hinh tam giac = ',s:6:2,' met vuong'); Readln End.

156/Tinh l c hut gi a 2 vt: Code: Program Luc_hut; CONST g=6.672E-8; Var m1,m2,d,f:Real; Begin Writeln('CHUONG TRINH TINH LUC HUT GIUA 2 VAT'); Write('-Khoi luong m1 (gam) = '); Readln(m1); Write('-Khoi luong m2 (gam) = '); Readln(m2); Write('-Khoang cac giua 2 vat (Cm) = '); Readln(d); f := g * m1 * m2 / sqr(d); Writeln('+Luc hut giua 2 vat = ',f:6:2); Readln End.

157/Tinh l ng:

Code: Program Tinh_luong; Var Ten:String; nc,pc,tam:Integer; bl,hs,tt,cl:Real; Begin Writeln('CHUONG TRINH TINH LUONG'); Writeln('------------------------'); Write('-Cho biet ho ten : '); Readln(ten); Write('-Cho biet bac luong : '); Readln(bl); Write('-Cho biet ngay cong : '); Readln(nc); Write('-Cho biet he so trach nhiem : '); Readln(hs); Write('-Cho biet phu cap khu vuc = '); Readln(pc); Write('-Cho biet so tien da tam ung ky 1 = '); Readln(tam); tt := ((bl/30 * nc * hs)+pc); cl := tt - tam; Writeln; Writeln('+Ong (Ba) : ',ten:24); Writeln('+Tien luong trong thang = ',tt:10:2,' dong'); Writeln('+So tien con linh = ',cl:10:2,' dong'); Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

158/Tinh PigNet: Code: Program Pignet; Var Ten:String; Tuoi:Integer; lon,nho,tb,tl,cao,pig:Real; Begin Writeln('CHUONG TRINH TINH PIGNET'); Writeln('------------------------'); Write('-Cho biet ho ten : '); Readln(ten); Write('-Cho biet tuoi : '); Readln(tuoi); Write('-Cho biet chieu cao : '); Readln(cao); Write('-Cho biet trong luong : '); Readln(tl); Write('-So do vong nguc luc hit vao = '); Readln(lon); Write('-So do vong nguc luc tho ra = '); Readln(nho); tb := 0.5 * (lon-nho); pig := cao - (tb + tl); Writeln; Write('+Ong (Ba) : ',ten:24); Writeln(' , ',tuoi,' tuoi'); Writeln('+Co so do Pignet = ',pig:6:2); Readln End.

159/Tinh th tich hinh cu: Code: Program Hinh_cau; Var s:integer; r,v:Real; Begin Writeln('CHUONG TRINH TINH THE TICH HINH CAU'); Writeln('---------------------------------'); Write('Cho biet dien tich hinh tron = '); Readln(s); r:=Sqrt(s/4*3.1416); v:=4/3 * 3.1416 *r*r*r; Writeln('*The tich hinh cau la : ',V:6:2,' met khoi'); Readln End.

160/Cng thm giy vao gi hin hanh: Code: Program Cong_giay; Var gio,phut,giay,them:Integer; Begin Writeln('CONG THEM GIAY VAO GIO HIEN HANH'); Writeln('--------------------------------'); Writeln('Nhap vao gio:phut:giay hien hanh'); Write('-Gio : '); Readln(gio); Write('-Phut: '); Readln(phut); Write('-Giay: '); Readln(giay); Write('-Cho biet so giay muon cong them: '); Readln(them); If (giay+them) < 60 Then giay:=giay+them Else Begin giay:=((giay+them)-60); phut:=phut+1; If phut >=60 Then Begin phut:=phut-60; gio:=gio+1; End; End; Writeln; Writeln('+Sau khi cong them so giay vao, gio moi la:'); Writeln(' ',gio,' : ',phut,' : ',giay); Writeln; Writeln('Bam phim <Enter> de ket thuc'); Readln End.

161/oan s ban ang nghi trong u: Code:

Program Doan_so; Var tren,duoi,giua:Integer; chon:Word; Begin tren:=100; duoi:=1; While duoi < tren Do Begin Writeln('DOAN SO BAN DANG NGHI TRONG DAU'); Writeln('-------------------------------'); giua:=(tren+duoi) Div 2; Writeln('-So cua ban Ty: ',giua); Writeln('-Neu go so 0 se ngung'); Writeln('-Neu ban Ty noi so ',giua,' nho hon thi ban Teo go 1 '); Write('-Neu ban Ty noi so ',giua,' lon hon thi ban Teo go 2 '); Readln(chon); If chon = 0 Then exit; If chon = 1 Then duoi:=giua Else tren:=giua End; Readln End.

162/i ch 2 s nguyn: Code: Program Doi_cho; Var so1,so2:Integer; Begin Writeln('DOI CHO 2 SO NGUYEN'); Writeln('-------------------'); Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai : '); Readln(so2); so1:=so1+so2; so2:=so1-so2; so1:=so1-so2; Writeln('SAU KHI CHUYEN CHO'); Writeln('+So thu nhat bay gio la: ',so1); Writeln('+So thu hai bay gio la : ',so2); Readln End.

163/i ch 2 s: Code: Program Doi_cho; Var so1,so2:Integer; (*-----------------*) PROCEDURE Doi(Var n,m:Integer); Var tam:Integer; Begin tam:=n; n:=m; m:=tam; End; (*-----------------*) BEGIN Writeln('DOI CHO 2 SO'); Writeln('Dung thu tuc'); Writeln('------------'); Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai: '); Readln(so2); Writeln('================='); Writeln(' Truoc khi doi cho'); Writeln('+So thu nhat = ',so1); Writeln('+So thu hai = ',so2); Writeln(' Sau khi doi cho'); Doi(so1,so2); Writeln('*So thu nhat : ',so1); Writeln('*So thu hai : ',so2); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END.

164/i ch th ng ra ch hoa: Code: Program Doi_chu_hoa; Var Chuoi:String; (*-----------------*) PROCEDURE Doi(Var St:String); Var i:Byte; Begin For i:=1 To Length(St) Do St[i]:=Upcase(St[i]); End; (*-----------------*) BEGIN Writeln('DOI CHU THUONG RA CHU HOA'); Writeln(' Dung thu tuc'); Writeln('-------------------------'); Write('Nhap mot chuoi ky tu : '); Readln(Chuoi); Writeln; Doi(Chuoi); Writeln('+Doi ra chu hoa = ',chuoi); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END.

165/i nhit sang Farenheit: Code: Program Doi_nhiet_do; Var FUNCTION Doi(x:Real):Real; (*---------------------*) BEGIN t:Real; tiep:Char; (*---------------------*) Begin Doi:=((9*x/5) + 32); End; Repeat Writeln('DOI DO BACH PHAN SANG DO

FARENHEIT'); Writeln(' Su dung ham'); Writeln('----------------------------------'); Write('-Nhap do bach phan: '); Readln(t); Writeln('*Doi sang do Farenheit = ',Doi(t):6:2); Writeln; Write('-Co tiep tuc khong ? (c/k) '); Readln(tiep); Until tiep='k' ; END.

166/i nhit sang Celcius: Code: Program Doi_do_F_C; Var f,c:Real; Begin Writeln('DOI DO FAHRENHEIT SANG CELCIUS'); Write('-Cho biet do Fahrenheit : '); Readln(f); c:=((f-32) * 5)/9; Writeln; Writeln(f:5:2,' do Fahrenheit doi sang do Celcius = ',c:5:2,#248); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

167/i Mike sang KM: Code: Program Doi_do_Mile_Km; Const Km_Mile=1.609344; Var m,k:Real; Begin Writeln('DOI MILE SANG Km'); Write('-Cho biet so Mile can doi: '); Readln(m); k:=m * Km_Mile; Writeln; Writeln(m:5:2,' dam Anh doi thanh = ',k:5:2,' Km'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

168/i ngay ra th trong tun: Code: Program Thu_trong_tuan; Var d:1..31; m:1..14; y:1900..2000; a:Integer; Begin Writeln('DOI NGAY RA THU TRONG TUAN'); Writeln(' Lich the ky 20'); Writeln('--------------------------'); Repeat Write('-Ngay ( so 0 de ngung): '); Readln(d); If d = 0 Then Exit; Write('-Thang: '); Readln(m); Write('-Nam: '); Readln(y); If m < 3 Then Begin m:=m+12; Dec(y); End; a:=d+2*m+(3*(m+1) Div 5)+y+(y Div 4) + 1; a:=a Mod 7; Case a Of 0 :Begin Write('Ngay ',d:2,' / ',m:2,' / ',y:4); Writeln(' la ngay Thu Bay'); End; 1 :Begin Write('Ngay ',d:2,' / ',m:2,' / ',y:4); Writeln(' la ngay Chu Nhat'); End; Else Begin Write('Ngay ',d:2,' / ',m:2,' / ',y:4); Writeln(' la ngay ',a); End; End; Until d=0; End.

169/i h 10 sang h 16: Code: Program Doi_he_so; Var n:Integer; (*------------------*) FUNCTION Doi(so:Integer):String; Const ky_so:Array[0..15] Of Char =('0','1','2','3','4','5', '6','7','8','9','A','B','C','D','E','F'); Var tam1:Integer; tam2:String; Begin tam1:=Hi(so); tam2:=ky_so[tam1 Shr 4] + ky_so[tam1 And $0F]; tam1:=Lo(so); Doi:=tam2+ky_so[tam1 Shr 4] +Ky_so[tam1 And $0F] End; (*------------------*) BEGIN Repeat Writeln('DOI SO HE 10 SANG HE 16'); Writeln(' Su dung ham

'); Writeln('-----------------------'); Writeln('Nhap mot so nguyen tu -32768 den 32767'); Write('neu nhap so 0 se ket thuc '); Readln(n); Writeln; Writeln('+So he 10 la = ',n); Writeln('+Doi sang he 16 la = ',Doi(n)); Writeln; Until n=0; END.

170/i h 10 sang h 16 (code 2): Code: Program Doi_he_16; Var n,so,chuso:Integer; tiep:Char; Begin Writeln('DOI SO HE 10 SANG HE 16'); Writeln('-----------------------'); Repeat Write('-Nhap so he 10 = '); Readln(so); n:=4096; {16 luy thua 3} Write('+Ky so he 16= '); Repeat chuso:=so Div n; Case chuso Of 0..9:Write(chuso); 10 .. 15:Write(chr(chuso + 55)); End; so:=son*(so Div n); n:=n Div 16; Until n=0; Writeln; Write('-Co thuc hien tiep khong ? (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

171/i h 10 sang h 2: Code: Program Doi_so_he_2; Var n,so:Integer; tiep:Char; Begin Writeln('DOI SO HE 10 SANG HE 2'); Writeln('----------------------'); Repeat Write('-Nhap so nguyen he 10: '); Readln(so); n:=16384; {Gan n= 2 luy thua 14} Writeln; Write('+So he 2 la '); Repeat Write(so Div n); so:=so - n * (so Div n); n:= n Div 2; Until n=0; Writeln; Write('-Tiep tuc nua khong (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

172/i h 16 sang h 10: Code: Program Doi_he_so; Var Ky_so:String; (*------------------*) FUNCTION Doiso(x:String):Integer; Var j,tong,nhan,so:Integer; tam:Char; Begin tong:=0; nhan:=1; For j:= length(x) Downto 1 Do Begin tam:=x[j]; If Ord(tam)= 32 Then tam:='0'; If tam in['0'..'9','A'..'F'] Then {Toan tu in} Begin so:=Ord(tam) - 48; If so > 9 Then so:=so-7; tong:=tong + so*nhan; End Else Begin Doiso:=0; Exit; End; nhan:=nhan*16 End; Doiso:=tong; End; (*------------------*) BEGIN Writeln('DOI SO HE 16 SANG HE 10'); Writeln(' Su dung ham'); Writeln('------------------------'); Repeat Write('Nhap ky so he 16 (go kk de dung): '); Readln(ky_so); Writeln; Writeln('+Doi sang he 10 la = ',Doiso(ky_so)); Writeln; Until ky_so='kk'; END.

173/i s ra ch : Code:

Program Doi_So_ra_chu; TYPE ChuSo='0'..'9'; Donvi=(Muoi,Tram); Phamvi= 0..999; CONST KS:Array[ChuSo] Of String=(' ','mot ',' hai',' ba', ' bon',' nam',' sau',' bay',' tam',' chin'); DV:Array[DonVi] Of String[6]=(' muoi ',' tram'); Var n:Phamvi; sn,s:String; Dodai:Byte; Begin Writeln('DOI SO RA CHU'); Writeln('-------------'); Writeln; Write('-Nhap mot so tu 0 den 999: '); Readln(n); Str(n,sn); DoDai:=Length(sn); Case DoDai Of 1: s:=KS[sn[1]]; 2: Begin If Sn[1] = '1' Then s:='muoi' Else s:=KS[sn[1]] +DV[Muoi]; If sn[2] = '5' Then s:=s+'lam' Else s:=s+KS[sn[2]]; End; 3: Begin s:=KS[sn[1]]+DV[Tram]; Case sn[2] Of '0' : If sn[3] <> '0' Then s:=s+'le'; '1' : s:=s+'muoi'; Else s:=s+KS[sn[2]]+DV[Muoi]; End; If (sn[3]='5') And (sn[2] <>'0') then s:=s+'lam' Else s:=s+KS[sn[3]]; End; End; Writeln(s); Writeln; Write(' Bam phim <Enter> de ket thuc '); readln End.

174/i s h thp phn sang h bt ki: Code: Program Doi_thap_phan_ra_he_bat_ky; Var He10,N,Y,HeN:Word; He,Tam:String; Begin Writeln('DOI SO TU HE THAP PHAN SANG HE BAT KY'); Writeln(' -----------------'); Writeln; Write('-Nhap so nguyen he thap phan: '); Readln(He10); N:=He10; Write('-Doi sang he nao: '); Readln(HeN); He:=' '; Repeat Y:=He10 Mod HeN; If Y < 10 Then Str(Y, Tam) Else Tam:=Chr(Y+55); He:=Tam + He; He10:= He10 Div HeN; Until He10 = 0; Writeln; Writeln('+So he 10 la : ',N); Writeln('+Doi sang he: ',HeN:2,' la: ',He); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

175/i s h thp phn sang h bt phn: Code: Program Doi_thap_phan_ra_bat_phan; Var He10,N,Y:Word; He8,Tam:String; Begin Writeln('DOI SO TU HE THAP PHAN SANG HE BAT PHAN'); Writeln(' -----------------'); Writeln; Write('-Nhap so nguyen he thap phan: '); Readln(He10); N:=He10; He8:=' '; Repeat Y:=He10 Mod 8; Str(Y, Tam); He8:=Tam + He8; He10:= He10 Div 8; Until He10 = 0; Writeln; Writeln('+So he 10 la : ',N); Writeln('+Doi sang he 8 la: ',He8); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

176/Thp phn sang nhi phn: Code: Program Doi_thap_phan_ra_nhi_phan; Var He10,N,Y:Word; He2,Tam:String; Begin Writeln('DOI SO TU HE THAP PHAN SANG HE NHI PHAN'); Writeln(' -----------------'); Writeln; Write('-Nhap so nguyen he thap phan: '); Readln(He10); N:=He10; He2:=' '; Repeat Y:=He10 Mod 2; Str(Y, Tam); He2:=Tam + He2; He10:= He10 Div 2; Until He10 = 0; Writeln; Writeln('+So he 10 la :

',N); Writeln('+Doi sang he 2 la: ',He2); ket thuc'); Readln End.

Writeln;

Writeln('

Bam phim <Enter> de

177/Thp phn sang thp luc: Code: Program Doi_thap_phan_ra_thap_luc; Var He10,N,Y:Word; He16,Tam:String; Begin Writeln('DOI SO TU HE THAP PHAN SANG HE THAP LUC PHAN'); Writeln(' -----------------'); Writeln; Write('-Nhap so nguyen he thap phan: '); Readln(He10); N:=He10; He16:=' '; Repeat Y:=He10 Mod 16; If Y < 10 Then Str(Y, Tam) Else Tam:=Chr(Y+55); He16:=Tam + He16; He10:= He10 Div 16; Until He10 = 0; Writeln; Writeln('+So he 10 la : ',N); Writeln('+Doi sang he 16 la: ',He16); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

178/i tn thang t s ra ch : Code: Program In_ten_thang; Var n:Byte; (*-----------------*) FUNCTION thang(x:Byte):String; Const Ten_thang:Array[1..12] Of String=('Gieng','Hai','Ba', 'Tu','Nam','Sau','Bay','Tam','Chin','Muoi','Mot','Chap'); Begin thang:=' Thang '+Ten_thang[x]; End; (*-----------------*) BEGIN Writeln('DOI TEN THANG TU SO RA CHU'); Writeln(' Su dung ham'); Writeln('--------------------------'); Write('-Thang : '); Readln(n); If (n < 1) And (n > 12) Then Write('Khong hop le') Else Write(thang(n)); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END.

179/i tin sao cho s t it nht: Code: Program Doi_tien; Var sotien:LongInt; (*-----------------*) PROCEDURE Doi(St:LongInt); Const Loai:Array[1..6] Of Integer =(50,20,10,5,2,1); Var i,soto:Integer; Begin i:=1; Repeat soto:=st Div loai[i]; If soto <> 0 Then Writeln(soto,' to loai ',loai[i],' ngan dong'); st:=st Mod loai[i]; i:=i+1; Until st=0; End; (*-----------------*) BEGIN Writeln('DOI TIEN SAO CHO SO TO IT NHAT'); Writeln(' Dung thu tuc'); Writeln('------------------------------'); Repeat Write('-So tien (ngan) co ( so 0 de ngung) : '); Readln(Sotien); Doi(Sotien); Writeln; Until sotien=0; END.

180/i s ra ch HOA: Code: Program Doi_So_Ra_Chu; Var Tiep:Char; Chuoitk,Chuoikq:String; Tram,Chuc,Donvi:0..9; Begin Tiep:='C'; While UpCase(Tiep)='C' Do {$R+} Chuoitk:='MOT HAI BA BON NAM SAU BAY TAM CHIN'; Write('-Nhap so can doi: '); Readln(so); Then Writeln('So khong') Else So:0..999; Begin If So = 0

Begin Tram:=So Div 100; Chuc:=(So-Tram * 100) Div 10; Donvi:= So Mod 10; Chuoikq:=' '; If (Donvi > 0) And (Donvi <> 5) Then Chuoikq :=Chuoikq + Copy(Chuoitk,4* Donvi -3,4); If (Donvi = 5) And (Chuc = 0) Then Chuoikq :=Chuoikq + ' NAM'; If (Donvi = 5) And (Chuc > 0) Then Chuoikq := Copy(Chuoitk,4 * Chuc-3,4)+' LAM'; If (Donvi = 5) And (Chuc = 1) Then Chuoikq := ' LAM'; If Chuc = 1 Then Chuoikq:='MUOI'+chuoikq; If (Chuc > 1) And (Donvi = 0) Then Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI '; If (Chuc > 1) And (Donvi = 1) Then Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI '+Chuoikq; If (Chuc > 1) And (Donvi > 1) And (Donvi <>5) Then Chuoikq:=Copy(Chuoitk,4 * Chuc-3,4)+' MUOI '+Chuoikq; If (Tram > 0) And (Chuc=0) And (Donvi=0) Then Chuoikq:=Copy(Chuoitk,4*Tram-3,4)+' TRAM '; If (Tram > 0) And (Chuc = 0) And (Donvi > 0) Then Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM LINH '+ Copy(Chuoitk,4*Donvi-3,4); If (Tram > 0) And (Chuc = 1) And (Donvi = 0) Then Chuoikq := Copy(Chuoitk,4*Tram3,4)+ 'TRAM MUOI'; If (Tram > 0) And (Chuc >= 2) And (Donvi = 0) Then Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI'; If (Tram > 0) And (Chuc <> 0) And (Donvi > 0) Then Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI '+ Copy(Chuoitk,4*Donvi-3,4); If (Tram > 0) And (Chuc <> 0) And (Donvi = 5) Then Chuoikq := Copy(Chuoitk,4*Tram-3,4)+' TRAM '+ Copy(Chuoitk,4*Chuc -3,4) +' MUOI LAM'; Write('-Viet bang chu la: ',Chuoikq); End; Writeln; Write('+Tiep tuc nua khong (C/K) '); Readln(Tiep); End; End.

181/Ch ng trinh tham quan: Code: Program Du_lich; Uses Crt; TYPE Diadiem=Set of 1..5; Var ng1,ng2,ng3,Ba,Hai,Mot:DiaDiem; ch1,ch2,ch3,i:Byte; (*----------------------------*) PROCEDURE Den(i:Byte); Begin Case i Of 1:Write('Da Lat '); 2:Write('Vung Tau '); 3:Write('Nha Trang '); 4:Write('Hue '); 5:Write('Ha Noi '); End; End; (*----------------------------*) BEGIN ClrScr; Writeln('CHUONG TRINH THAM QUAN'); Writeln('----------------------'); Writeln(' 1-Da Lat'); Writeln(' 2-Vung Tau'); Writeln(' 3-Nha Trang'); Writeln(' 4-Hue'); Writeln(' 5-Ha Noi'); Writeln('Chon noi nao, go cac so tu 1 den 5'); Writeln('1-Nguoi thu nhat chon 3 noi:'); Write(' -Noi thu nhat: '); Readln(ch1); Write(' -Noi thu hai: '); Readln(ch2); Write(' -Noi thu ba: '); Readln(ch3); ng1:=[ch1,ch2,ch3]; Writeln('2-Nguoi thu hai chon 3 noi:'); Write(' -Noi thu nhat: '); Readln(ch1); Write(' -Noi thu hai: '); Readln(ch2); Write(' -Noi thu ba: '); Readln(ch3); ng2:=[ch1,ch2,ch3]; Writeln('3-Nguoi thu ba chon 3 noi:'); Write(' -Noi thu nhat: '); Readln(ch1); Write(' -Noi thu hai: '); Readln(ch2); Write(' -Noi thu ba: '); Readln(ch3); ng3:=[ch1,ch2,ch3]; Ba:=ng1 * ng2 * ng3; Hai:=(ng1*ng2-ng3) + (ng2*ng3-ng1) + (ng3*ng1-ng2); Mot:=ng1 + ng2 +ng3; Writeln; Writeln('*Cac noi ma ca 3 nguoi deu chon: '); For i:=1 To 5 Do If i In Ba Then Den(i); Writeln; Writeln('*Noi chi co 2 nguoi chon: '); For i:=1 To 5 Do If i In Hai Then Den(i); Writeln; Writeln('*Noi chi co 1 nguoi chon: '); For i:=1 To 5 Do If i In Mot Then Den(i); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END.

182/Gp giy co day 1 met: Code: Program gap_giay; Var day:Real; solan:Integer; Begin Writeln('GAP GIAY CO DO DAY 1 MET'); Writeln('------------------------'); day:=0.1; solan:=0; While day < 1000 Do Begin day:=day * 2; solan:=solan+1; End; Writeln; Writeln('+Phai gap toi: ',solan,' lan'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

183/Giai ph ng trinh trung ph ng: Code: Program Phuong_trinh_trung_phuong; Var n,k:0..4; y:Array[1..2] Of Real; a,b,c,delta:Real; Begin Writeln('GIAI PHUONG TRINH TRUNG PHUONG'); Writeln('------------------------------'); Repeat Write('-Nhap he so a: '); Readln(a); Until a <> 0; Write('-Nhap he so b: '); Readln(b); Write('-Nhap he so c: '); Readln(c); Delta:=b*b-4*a*c; If Delta < 0 Then Begin y[1]:=-1; y[2]:=-1; End; If Delta = 0 Then Begin y[1]:=-1; y[2]:=-b/ (2*a); End; If Delta > 0 Then Begin y[1]:=(-b+sqrt(Delta))/(2*a); y[2]:=(-b-sqrt(Delta))/(2*a); End; n:=0; Writeln(' KET QUA'); for k:=1 to 2 Do If y[k] > 0 Then Begin Writeln(' +X1= ',Sqrt(y[k]):5:3); Writeln(' +X2= ',-Sqrt(y[k]):5:3); Inc(n,2) End Else If y[k] = 0 Then Begin Writeln('X = 0'); Inc(n); End; If n=0 Then Writeln('Phuong trinh vo nghiem') Else Writeln('Phuong trinh co ',n,' nghiem'); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End.

184/G i tim tit kim: Code: Program Gui_tiet_kiem; Var x,y:Real; thang:Word; tiep:Char; Begin Writeln('GUI TIEN TIET KIEM'); Writeln('------------------'); Repeat Write('-So tien hien co: '); Readln(x); Write('-So tien muon co: '); Readln(y); thang:=0; Repeat inc(thang); x:= x *1.015; Until x >=y; Writeln('+Thoi gian can gui: ',thang,' thang'); Writeln; Write('-Co tiep tuc nua khong (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; End.

185/Ham X mu N: Code: Program X_mu_n; Var x:Integer; n:Word; (*-----------------*) FUNCTION ham_mu(i:Integer;k:Word):LongInt; Begin If k = 0 Then ham_mu:=1 Else ham_mu:=i*ham_mu(i,k-1); End; (*-----------------*) BEGIN Writeln('HAM X MU N'); Writeln('----------'); Write('-Nhap X = '); Readln(x); Write('-Nhap N = '); Readln(n); Writeln('*Ket qua = ',Ham_mu(x,n)); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END.

186/Hoan vi 2 con tro thay cho hoan vi ni dung:

Code: Program Hoan_Vi_Chuoi; Uses Crt; VAR Chuoi1,Chuoi2,Tam :^String; Begin ClrScr; Writeln('HOAN VI 2 CON TRO THAY CHO HOAN VI NOI DUNG'); Writeln('-------------------------------------------'); Writeln; New(Chuoi1); New(Chuoi2); Chuoi1^ := 'Giao trinh Turbo Pascal 7.0'; Chuoi2^ := 'Giao trinh FoxPro 2.6'; Writeln; Writeln('NOI DUNG BAN DAU CUA 2 CHUOI'); Writeln('----------------------------'); Writeln; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('-Chuoi thu hai : ',Chuoi2^); Writeln; Writeln('NOI DUNG SAU KHI HOAN VI 2 CON TRO'); Writeln('----------------------------------'); Writeln; Tam := Chuoi1; Chuoi1 := Chuoi2; Chuoi2 := Tam; Writeln('-Chuoi thu nhat: ',Chuoi1^); Writeln('Chuoi thu hai : ',Chuoi2^); Dispose(Chuoi1); Dispose(Chuoi2); Writeln; Write(' Bam <Enter> . . . '); Readln; End.

187/H ng dn mua ve may bay: Code: Program Huong_dan; Var chon:Byte; Begin Writeln('HUONG DAN MUA VE MAY BAY'); Writeln('------------------------'); Writeln(' 1-Tp Ho Chi Minh di Ha Noi'); Writeln(' 2-Tp Ho Chi Minh di Da Nang'); Writeln(' 3-Tp Ho Chi Minh di Nha Trang'); Writeln(' 4-Tp Ho Chi Minh di Phu Quoc'); Writeln(' 5-Tp Ho Chi Minh di Con Dao'); Writeln(' 6-Tp Ho Chi Minh di Paris'); Writeln(' 7-Tp Ho Chi Minh di London'); Writeln(' 8-Tp Ho Chi Minh di Moscow'); Writeln(' 9-Tp Ho Chi Minh di Bac Kinh'); Writeln(' 10Tp Ho Chi Minh di Tokyo'); Write('-Chon tuyen nao, go vao so tuong ung (1 - 10): '); Readln(chon); Case chon of 1 :Writeln(' Xin moi den quay ve so 1'); 2 :Writeln(' Xin moi den quay ve so 2'); 3 :Writeln(' Xin moi den quay ve so 3'); 4 :Writeln(' Xin moi den quay ve so 4'); 5 :Writeln(' Xin moi den quay ve so 5'); 6 :Writeln(' Xin moi den quay ve so 6'); 7 :Writeln(' Xin moi den quay ve so 7'); 8 :Writeln(' Xin moi den quay ve so 8'); 9 :Writeln(' Xin moi den quay ve so 9'); 10 :Writeln(' Xin moi den quay ve so 10'); Else Writeln('-Khong co tuyen bay nay'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

188/In cac s khac nhau cua day s: Code: Program So_khac_nhau; CONST M=100; TYPE DaySo=Set of 0..255; DayNguyen=Array[1..M] Of Integer; Var a:DayNguyen; i,n:Integer; x:DaySo; Begin Writeln('IN CAC SO KHAC NHAU CUA DAY SO'); Writeln('------------------------------'); Repeat Write('Nhap bao nhieu so: '); Readln(n); Until N <= M; For i:=1 To N Do Begin Write('-Phan tu thu: ',i,' = '); Readln(a[i]); End; x:=[]; For i:=1 To N Do If Not (a[i] In x) Then Begin Write(a[i],', '); x:=x+[a[i]]; End; Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End.

189/In day Fibonaci: Code: Program Day_so_Fibonaci; Var n,j,pj,pj1,pj2:Integer; Begin SO FIBONACI'); Writeln('------------------'); Write('-Nhap so N= '); Writeln('IN DAY Readln(n); j:=2;

pj:=1; pj1:=1; While j <> n Do Begin pj2:=pj1; pj1:=pj; pj:=pj1+pj2; j:=j+1; End; Writeln; Writeln('+So hang thu ',n,' cua day Fibonaci = ',pj); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

190/In la c n c mi ra man hinh: Code: Program Co_My; Var i,j,dai1,dai2,rong1,rong2:Byte; Begin Writeln('IN LA CO NUOC MY RA MAN HINH'); Writeln('-----------------------------'); Write('-Nhap chieu rong_1: '); Readln(rong1); Write('-Nhap chieu rong_2: '); Readln(rong2); Write('-Nhap chieu dai_1: '); Readln(dai1); Write('-Nhap chieu dai_2: '); Readln(dai2); For i:=1 To rong1 Do Begin If odd(i) Then Begin For j:=1 To (dai1 Div 2) Do Write('*',' '); If odd(dai1) Then Write(' ','*'); End Else Begin For j:=1 To (dai1 Div 2) Do Write(' ','*'); If odd(dai1) Then Write(' '); End; For j:=1 to dai2 Do Write('='); Writeln; End; For i:=1 To rong2 Do Begin For j:=1 To dai1+dai2 Do Write('='); Writeln; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

191/In xen ke cac du sao: Code: Program In_xen_ke; Var dai,rong,i,j:Byte; Begin Writeln('IN XEN KE CAC DAU SAO'); Writeln('--------------------'); Write('-Nhap chieu dai: '); Readln(dai); Writeln('-Nhap chieu rong: '); Readln(rong); For i:=1 To rong Do Begin If i Mod 2 = 0 Then For j:=1 To dai Div 2 Do Write(' *') {dau trang va dau sao} Else For j:=1 To dai Div 2 +dai Mod 2 Do Write('* '); {dau sao va dau trang} Writeln; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

192/Khao sat 2 ng tron: Code: Program Khao_Sat_Hai_Duong_Tron; TYPE DuongTron = RECORD R : Real; x, y : Real; End; VAR Dt1, Dt2 : DuongTron; Kc, Tong, Hieu : Real; BEGIN Writeln('KHAO SAT 2 DUONG TRON'); Writeln('---------------------'); Writeln; Writeln('*Duong tron thu nhat'); Write(' +Ban kinh: '); Readln(Dt1.R); Write(' +Toa do x: '); Readln(Dt1.x); Write(' +Toa do y: '); Readln(Dt1.y); writeln; Writeln('*Duong tron thu hai'); Write(' +Ban kinh: '); Readln(Dt2.R); Write(' +Toa do x: '); Readln(Dt2.x); Write(' +Toa do y: '); Readln(Dt2.y); Kc := Sqrt(Sqr(Dt1.x - Dt2.x) + Sqr(Dt1.y - Dt2.y)); Tong := Dt1.R + Dt2.R; Hieu := ABS(Dt1.R - Dt2.R); If (Kc = 0) AND (Hieu = 0) Then Writeln('-Hai duong tron trung nhau') Else If (Hieu > Kc) Then Writeln('-Hai duong tron long nhau') Else If (Tong = Kc) OR (Hieu = Kc) Then Writeln('-Hai duong tron tiep xuc nhau') Else If (Tong > Kc) AND (Hieu < Kc) Then Writeln('-Hai duong tron cat nhau') Else If (Tong < Kc) Then Writeln('-Hai duong tron o ngoai nhau'); Readln END.

193/Khi lp ph ng chui qua khung ch nht: Code: Program Khoi_lap_phuong; Var a,b,c,m,n,tam:Integer; Begin Writeln('KHOI LAP PHUONG CHUI QUA KHUNG CHU NHAT'); Writeln('---------------------------------------'); Writeln(' *Nhap so lieu cho khoi lap phuong'); Write('-Canh thu nhat: '); Readln(a); Write('-Canh thu hai : '); Readln(b); Write('-Canh thu ba : '); Readln(c); Writeln(' *Nap so lieu cho khung chu nhat'); Write('-Canh thu nhat: '); Readln(m); Write('-Canh thu hai : '); Readln(n); If (a>b) Then Begin tam:=a; a:=b; b:=tam; End; If (b>c) Then Begin tam:=b; b:=c; c:=tam; End; If (a>b) Then Begin tam:=a; a:=b; b:=tam; End; If (m>n) Then Begin tam:=m; m:=n; n:=tam; End; If (a<m) And (b<n) Then Writeln('+Khoi lap phuong chui qua duoc khung chu nhat') Else Writeln('+Khoi lap phuong khong chui qua duoc khung chu nhat'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

194/Ki m phiu bu c chi oan: Code: Program Bau_cu; CONST Max=100; ucv=5; tke:Array[1..5] Of Word =(0,0,0,0,0); TYPE stt=1..ucv; phieubau=Set of stt; Var Phieu:Array[1..Max] Of Phieubau; n,n1,i:1..Max; j:1..ucv; Ch:Char; Bau:0..5; Begin Writeln('KIEM PHIEU BAU CU CHI DOAN TN'); Writeln('-----------------------------'); Write('-Cho biet so nguoi tham gia bau (1..100): '); Readln(n); {Gan tat ca cac tap hop bang rong} FillChar(Phieu, Sizeof(Phieu), #0); {Nhap phieu bau cua tat ca cac cu tri} For i:=1 To N Do Begin Write('-Cu tri thu ',i); For j:=1 To ucv Do Begin Write(' +Chon ung cu vien thu ',j,' (C/K) ? '); Readln(Ch); Ch:=Upcase(Ch); If Ch = 'C' Then Phieu[i]:=Phieu[i] + [j]; End; End; {Kiem tra phieu hop le } n1:=n; For i:=1 To n Do Begin Bau:=0; For j:=1 To ucv Do If j In Phieu[i] Then Inc(Bau); If Bau <> 3 then Begin Phieu[i]:=[]; Dec(n1); End; End; {Kiem phieu} For i:= 1 To n Do For j:=1 To ucv Do If j IN Phieu[i] Then Inc(Tke[j]); Writeln; Writeln(' KET QUA KIEM PHIEU'); Writeln('-So phieu hop le: ',n1,' phieu'); For j:=1 To ucv Do Writeln('-So phieu chon ung cu vien thu: ',j,' la ',Tke[j]); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End.

195/Ki m tra ban phim: Code: Program KT_phim; Var phim:Char; Begin Writeln('KIEM TRA BAN PHIM'); Writeln('-----------------'); Write('-Bam mot phim: '); Readln(phim); Case phim Of 'A'..'Z','a'..'z' :Writeln('+Ban vua bam mot phim ky tu'); '0'..'9' :Writeln('+Ban vua bam mot phim ky so'); '+','-','*','/' :Writeln('+Ban vua bam mot phim toan tu so hoc'); Else Writeln('+Ban vua bam mot phim dac biet'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

196/Ki m tra ngay h p l: Code: Program Kiem_tra_ngay; TYPE ngay=1..31; thang=1..12; Var d:ngay; m:thang; y:Word; (*--------------------*) FUNCTION Nhuan(Nam:Word):Boolean; Begin If nam Mod 100 = 0 Then Nhuan:=(Nam Mod 400)=0 Else Nhuan:=(Nam Mod 4)=0; End; (*--------------------*) FUNCTION So_ngay(d:Ngay; m:Thang; Y:Word): Boolean; Var t1,t2,t3:Boolean; Begin t1:=(d=30) And (m=2); t2:=(d=29) And (m=2) And (Not Nhuan(y)); t3:=(d=31) And (m in [2,4,6,9,11]); If t1 Or t2 Or t3 Then so_ngay:=False Else so_ngay:=True; End; (*--------------------*) FUNCTION Ket_thuc:Boolean; Var ch:Char; Begin Write('-Tiep tuc nua khong ? (c/k) '); Readln(ch); Ket_thuc:=Upcase(ch)='K'; End; (*--------------------*) BEGIN Writeln('KIEM TRA NGAY HOP LE ?'); Writeln(' Su dung ham'); Writeln('----------------------'); Repeat Write('-Ngay: '); Readln(d); Write('-Thang: '); Readln(m); Write('-Nam: '); Readln(y); If so_ngay(d,m,y) Then Writeln('*Ngay ',d:2,' Thang ',m:2,' Nam ',y:4,' la hop le') Else Writeln('*Ngay ',d:2,' Thang ',m:2,' Nam ',y:4,' khong hop le') Until Ket_thuc; END.

197/Ki m tra s nhp vao: Code: Program Kiem_tra_so; Label tt; Var St:String; So:Real; Dung:Integer; tiep:Char; Begin Repeat Writeln('KIEM TRA SO NHAP VAO'); Writeln(' -----------'); tt:Write('-Nhap mot so: '); Readln(St); Val(St,So,Dung); If Dung = 0 Then Writeln(' +Ban da nhap mot so: ',So:8:2) Else Writeln(' +Khong phai so, xin nhap lai:'); Until Dung = 0; Writeln; Write('-Co tiep tuc khong (C/K) '); Readln(Tiep); If UpCase(Tiep)='C' Then Goto tt; End.

198/Ki m tra c cua 2 s nguyn: Code: Program Uoc_so; Var so1,so2,tam:Integer; Begin Writeln('KIEM TRA UOC SO CUA 2 SO NGUYEN'); Writeln('-------------------------------'); Write('-So thu nhat= '); Readln(so1); Write('-So thu hai = '); Readln(so2); If so1 < so2 Then Begin tam:=so1; so1:=so2; so2:=tam; End; If (so1 Mod so2) = 0 Then Writeln('+So: ',so2:4,' la uoc so cua so: ',so1:4) Else Begin Writeln('+Hai so: ',so1:4,' va so ',so2:4); Writeln(' Khong phai la uoc so cua nhau'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End.

199/Ki m tra ngay: Code: Program kt_ngay; CONST Ngay = [1..31]; Thang = [1..12]; Th31ngay: Set of byte = [1,3,5,7,8,10,12]; BaoLoi : Array[1..3] Of String[30] =('-Ban nhap sai ngay, thang', '-Thang nay khong co ngay 31','-thang 2 khong co ngay nay'); TYPE

NgayThang = RECORD Ng, Th : Byte; Nam : Word; End; VAR Nhatky : NgayThang; Loi : Array[1..3] Of Boolean; i : Byte; Nhuan : Boolean; BEGIN With Nhatky Do Begin Write('-Nhap ngay = '); Readln(Ng); Write('-Nhap thang= '); Readln(Th); Write('-Nhap nam = '); Readln(Nam); Loi[1] := (NOT(Ng In Ngay)) OR (NOT (Th In Thang)); Loi[2] := (Ng = 31) AND (NOT (Th In Th31Ngay)); Nhuan := ((Nam Mod 4) = 0) AND ((Nam Mod 100) <> 0) OR ((Nam Mod 400) = 0); Loi[3] := ((Ng > 29) AND (Th = 2)) OR ((Ng = 29) AND (th = 2) AND (NOT Nhuan)); End; For i := 1 To 3 Do If Loi[i] Then Writeln(BaoLoi[i]); Readln END. 201/Lam tron s th c: [CODE] Program Lam_tron; Var so:Real; le:Integer; (*---------------*) FUNCTION Tron(so:Real;le:Integer):Real; Var i,n:LongInt; Begin For i:=1 To le+1 Do so:=so*10; n:=Trunc(so); If (n Mod 10) >= 5 Then n:=(n Div 10) +1 Else n:=n Div 10; so:=n; For i:=1 To le Do so:=so/10; Tron:=so; End; (*---------------*) BEGIN Writeln('LAM TRON SO THUC'); Writeln(' Su dung ham'); Writeln('----------------'); Write('-Nhap so: '); Readln(so); Write('-Can bao nhieu so le: '); Readln(le); Writeln; Writeln(' KET QUA'); Writeln('*So nhap vao = ',so:12:10); Writeln('*So lam tron = ',Tron(so,le):12:le); Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln END. [/CODE] 202/Loang mau: [CODE] Program Loang_mau;

Uses Crt; Const St=' Chao mung ban da den voi THPTXuanLoc.CoM Var k:Integer; Procedure Mau(nen,chu:Integer); Begin TextBackGround(nen); TextColor(chu); End; BEGIN TextMode(C80); TextBackGround(Black); ClrScr; For k:=2 To 23 Do Begin Mau(k Mod 8,(k+4) Mod 8 + 8); GotoXY(1,k); Write(St) End; Readln END. [/CODE] 203/May tinh tay: [CODE] Program May_tinh_tay; Var so1,so2,kq:Real; toantu,tiep:Char; thuchien:Boolean; Begin Writeln(' MAY TINH TAY'); Writeln('Thuc hien 4 phep tinh so hoc'); Writeln('----------------------------'); Repeat Write('-Bam so: '); Readln(so1); Write('-Phep toan(+,-,*,/): '); Readln(toantu); Write('-Bam so: '); Readln(so2); thuchien:=True; Case toantu Of '+' :kq:=so1+so2; '-' :kq:=so1-so2; '*' :kq:=so1*so2; '/' :If so2 <> 0 Then kq:=so1/so2 Else thuchien:=False; Else thuchien:=False; End; If thuchien Then Writeln('+Ket qua = ',kq:6:2)

';

Else Writeln('+Khong lam duoc'); Writeln; Write('-Thuc hien tiep khong ? (C/K) '); Readln(tiep); Until Upcase(tiep) = 'K'; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 204/Nm nhun hay nm th ng: [CODE] Program Nam_nhuan; Var nam:Word; nhuan:boolean; Begin Writeln('NAM NHUAN HAY NAM THUONG'); Writeln('------------------------'); Write('-Nhap vao nam can kiem tra: '); Readln(nam); If nam Mod 100 = 0 Then Nhuan:=(nam Mod 400)=0 Else Nhuan:=(nam Mod 4)=0; Write('Nam: ',nam, ' la: '); If nhuan Then Writeln('nam nhuan') Else Writeln('nam thuong ( khong nhuan)'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 205/Ngay th my trong tun: [CODE] Program Thu_trong_tuan; Var thu,ngay,thang:Byte; Nam,luu:Integer; Begin Writeln('NGAY THU MAY TRONG TUAN'); Writeln('-----------------------'); Write('-Ngay: '); Readln(ngay); Write('-Thang: '); Readln(thang); Write('-Nam: '); Readln(nam); luu:=nam; nam:=1900 + (nam Mod 1900); If thang < 3 Then Begin

thang:=thang + 12; nam:=nam - 1; End; thu:=ABS(ngay+2*thang+3*(thang+1) Div 5+nam+nam Div 4) Mod 7; Case thu Of 0 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Chu Nhat'); End; 1 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln('+La ngay Thu Hai'); End; 2 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Thu Ba'); End; 3 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Thu Tu'); End; 4 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Thu Nam'); End; 5 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Thu Sau'); End; 6 : Begin Writeln('+Ngay:',ngay:3,',thang:',thang:3,',nam:',luu:5); Writeln(' +La ngay Thu Bay'); End; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 206/Phn tich N thanh tich cac th a s nguyn t: [CODE] Program thuaso; Var n,i:Integer; Begin Writeln('PHAN TICH N THANH TICH CAC THUA SO NGUYEN TO'); Writeln('--------------------------------------------'); Write('-Nhap so N= '); Readln(n); Repeat i:=2; While (n Mod i <> 0) And (i < n ) Do i:=i + 1; Write(i:4);

n:=n Div i; Until n=1; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 207/Phn tich s nguyn d ng nho nht: [CODE] Program Phan_tich; Const n=15; Var a:Array[1..n, 1..n] Of Longint; i,j,i1,j1:Integer; Begin Writeln('PHAN TICH SO NGUYEN DUONG NHO NHAT'); Writeln('----------------------------------'); Writeln; For i:=1 To n Do For j:=1 To n Do a[i,j]:=i*i*i + j*j*j; Writeln; Writeln('IN KET QUA'); Writeln('----------'); For i:=1 To n Do For j:=1 To i Do Begin For i1:= i+1 To n Do For j1:=1 To j-1 Do If a[i,j]=a[i1,j1] Then Writeln(a[i,j],' = ',i,' ^3 ',' + ',j,' ^3 ',' = ', i1,' ^3 ',' + ',j1,' ^3'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. [/CODE] 208/Phep chia chi la phep tr : [CODE] Program Phep_chia; Var chia,bichia,luu,thuong,du:Integer; Begin Writeln('PHEP CHIA CHI LA PHEP TRU'); Writeln('-------------------------'); Write('-Nhap so bi chia: '); Readln(bichia); Write('-Nhap so chia: '); Readln(chia); luu:=bichia; thuong:=0; While bichia >=chia Do Begin

bichia:=bichia-chia; thuong:=thuong+1; End; du:=bichia; Writeln; Writeln('+Neu dem so ',luu,' chia cho so ',chia,' ket qua la: '); Writeln(' *So thuong = ',thuong:6); Writeln(' *So du = ',du:6); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 209/Quay X S: [CODE] Program Xo_so; Uses Crt; Var quacau,i:Byte; ch:Char; BEGIN ClrScr; TextColor(Red); Writeln(' QUAY XO SO'); TextColor(Magenta); Writeln(' Su dung ham Random'); TextColor(Yellow); Writeln(' -------------------'); Writeln; TextColor(Green); Write(' Cho so qua cau de quay: '); Readln(quacau); Writeln; TextColor(Cyan); Write(' Bam phim bat ky de bat dau quay xo so'); Repeat i:= Random(9); Until KeyPressed; Writeln; TextColor(LightBlue); Write(' Bam phim <Enter> de ngung quay'); Readln; ch:=ReadKey; Writeln; TextColor(Yellow); Writeln(' KET QUA TRUNG THUONG LA SO: '); Writeln; TextColor(Red); Write(' '); For i:=1 To quacau Do Write(' ',Random(9):3); Writeln; Writeln; TextColor(Magenta);

Write(' Readln END. [/CODE]

Bam phim <Enter> de ket thuc');

210/S nguyn t: [CODE] Program So_nguyen_to; Var n,i:Integer; Begin Writeln('SO VUA NHAP CO PHAI LA SO NGUYEN TO ?'); Writeln('-------------------------------------'); Write('-Nhap mot so : '); Readln(n); While n > 1 Do Begin i:=2; While (n Mod i <> 0) Do i:=i+1; if i=n Then Writeln('-So ',n,' la so nguyen to') Else Writeln('-So ',n,' khong phai la so nguyen to'); Write('-Nhap mot so (so 0 de ngung): '); Readln(n); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 211/S ngu nhin: [CODE] Program So_ngau_Nhien; Uses Crt; CONST N = 100; VAR Mang : Array[1..N] Of ^Word; HeapTop : Pointer; {-------------------------------} Procedure TaoSo; Var i : Byte; Begin Randomize; For i := 1 To N Do Begin New(Mang[i]); Mang[i]^ := Random(999); End; End; {-------------------------------} Procedure SapXep; Var

i : Byte; Tam : Word; KetThuc : Boolean; Begin Repeat KetThuc := True; For i := 1 To n-1 Do If Mang[i]^ > Mang[i+1]^ Then Begin Tam := Mang[i]^; Mang[i]^ := Mang[i+1]^; Mang[i+1]^ := Tam; KetThuc := False; End; Until ketThuc; End; {-------------------------------} Procedure InKq; Var i :Byte; Begin For i := 1 To N Do Write(Mang[i]^:4); End; {-------------------------------} BEGIN ClrScr; Writeln(' TAO VA SAP XEP THU TU 100 SO NGAU NHIEN'); Writeln(' ---------------------------------------'); Writeln; Mark(HeapTop); TaoSo; SapXep; Inkq; Writeln; Write(' Bam <Enter> . . . '); Readln; Release(HeapTop); END. [/CODE] 212/S ngay trong thang: [CODE] Program So_ngay; Uses Crt; TYPE Nam=1900..2000; Thang=1..12; Ngay=1..31; Var Nam1,Nam2:Nam; Thang1,Thang2:Thang; Ngay1,Ngay2:Ngay; n:Real; kq:Boolean;

(*--------------------*) FUNCTION KTngay(d:Ngay;m:Thang;y:Nam):Boolean; Begin KTngay:=True; Case m Of 4,6,9,11: If d > 30 Then KTngay:=False; 2 : If (d > 29) Or ((d =29) And (y Mod 4 <> 0)) Then KTngay:=True; End; End; (*--------------------*) FUNCTION Julian(d:Ngay;m:Thang;y:Nam):Real; {Lich Julieng} Var Tam:Real; Begin Tam:=Int((m-14.0)/12.0); Julian:=d-32075.0+ Int(1461.0*(y+4800.0+Tam)/4.0+ Int(367.0*(m-2.0-Tam*12.0)/12.0)Int(3.0*Int(y+4900.00+Tam)/100.0)/4.0) End; (*--------------------*) BEGIN {$R+} Repeat ClrScr; Writeln(' *Nhap moc thoi gian dau'); Write('-Ngay: '); Readln(Ngay1); Write('-Thang: '); Readln(Thang1); Write('-Nam: '); Readln(Nam1); Kq:=KTngay(Ngay1,Thang1,Nam1); If not Kq Then Begin Sound(100); Delay(50); NoSound; Writeln('-Ngay khong hop le'); End; Until Kq; Repeat ClrScr; Writeln(' *Nhap moc thoi gian cuoi'); Write('-Ngay: '); Readln(Ngay2); Write('-Thang: '); Readln(Thang2); Write('-Nam: '); Readln(Nam2); Kq:=KTngay(Ngay2,Thang2,Nam2);

If not Kq Then Begin Sound(100); Delay(50); NoSound; Writeln('-Ngay khong hop le'); End; Until Kq; n:=Julian(Ngay2,Thang2,Nam2)-Julian(Ngay1,Thang1,Nam1); Writeln('Ket qua: ',n:8:0,' ngay'); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln END. [/CODE] 213/Thang X co bao nhiu ngay: [CODE] Program Ngay_cua_thang; Var thang,nam,luu,songay:Integer; Begin Writeln('THANG. X . CO BAO NHIEU NGAY'); Writeln('---------------------------'); Write('-Ban muon hoi thang nao co bao nhieu ngay: '); Readln(thang); Write('-Cho biet nam : '); Readln(nam); luu:=nam; Case thang Of 1,3,5,7,8,10,12: songay:=31; 4,6,9,11 : songay:=30; 2 :Case nam Mod 4 Of 1,2,3 :songay:=28; 0 :songay:=29; End; End; If songay >=30 Then Writeln('+Thang:',thang:3,', nam: ',luu:4,', co: ',songay:3,' ngay') Else Writeln('+Thang:',thang:3,', nam: ',luu:5,', co: ',songay:3,' ngay'); Writeln; Writeln(' Bam phin <Enter> de ket thuc'); Readln End. [/CODE] 214/Tim 10 s ngu nhin khng m: [CODE] Program So_ngau_nhien; CONST N=100; TYPE Nguyen= Set of 1..N; Var a:Nguyen; So,i,spt:Integer;

Begin Writeln('TIM 10 S0 NGUYEN NGAU NHIEN KHONG AM'); Writeln(' NHO HON 100, KHONG TRUNG NHAU'); Writeln('------------------------------------'); spt:=0; a:=[]; Randomize; Repeat So:=Random(100); If Not (So In a) Then Begin a:=a+[So]; Spt:=Spt +1; End; Until Spt = 10; Writeln; Writeln('10 so ngau nhien nho hon 100 la: '); Writeln; For i:= 0 To 100 Do If i In a Then Write(i,', '); Writeln; Writeln; Write(' Bam phim <Enter> de ket thuc '); Readln End. [/CODE] 215/Tim 2 phn t lin tip bng gia tri X: [CODE] Program Tim_PT_Mang; Uses Crt; Var a:Array[1..1000] Of Integer; {----------------------------} Procedure Tao; Var k:Integer; Begin Randomize; For k:=1 To 100 Do a[k]:=Random(100); End; {----------------------------} Procedure Tim; Var k,x:Integer; Begin Write('-Nhap gia tri X= '); Readln(x); For k:=1 To 999 Do Begin If a[k] +a[k+1] = X Then Writeln('a[',K,'] + a[',K+1,']= ',X) Else

Writeln('Khong co 2 phan tu nao bang: ',X); End; End; BEGIN Writeln('TIM 2 PHAN TU LIEN TIEP BANG GIA TRI X'); Writeln('-------------------------------------'); Writeln; Tao; Tim; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln; END. [/CODE] 216/Tim cac s nguyn t t 2 n N: [CODE] Program Tim_so_nguyen_to; Var n,i,j:Integer; nguyento:Boolean; Begin Writeln('TIM CAC SO NGUYEN TO TU 2 DEN N'); Writeln('-------------------------------'); Write('-Nhap so N= '); Readln(n); For i:=2 To n Do Begin nguyento:=True; j:=2; While nguyento And (j <i) Do Begin If (i Mod j)=0 Then nguyento:=False; j:=j+1; End; If nguyento Then Write(i:4); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 217/Tim cac c s cua s nguyn: [CODE] Program uoc_so; Var i,n:Integer; Begin Writeln('TIM CAC UOC SO CUA SO NGUYEN'); Writeln('----------------------------'); Write('-Nhap mot so nguyen: '); Readln(n); Writeln; Writeln('+Cac uoc so cua so ',n,' la: ');

Writeln; For i:=1 To N Do If (n Mod i) = 0 Then Write(i:6); Writeln; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 218/Tim s l n nht trong n s nguyn: [CODE] Program Cuc_dai; Var i,n:Byte; so,solon:Integer; Begin Writeln('TIM SO LON NHAT TRONG N SO NGUYEN'); Writeln('---------------------------------'); Write('-Muon nhap bao nhieu so: '); Readln(n); i:=1; Write('-So thu ',i,' = '); Readln(so); solon:=so; For i:=2 To N Do Begin Write('-So thu ',i,' = '); Readln(so); If solon < so Then solon:=so; End; Writeln; Writeln('+So lon nhat trong ',n,' so vua nhap la so: ',solon); Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 219/S l n nht va nho nht: [CODE] Program So_lon_so_nho; Var so1,so2,so3,so4,max,min:Integer; Begin Writeln('TIM SO LON NHAT VA SO NHO NHAT'); Writeln('-----------------------------'); Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai : '); Readln(so2); Write('-Nhap so thu ba : '); Readln(so3); Write('-Nhap so thu tu : '); Readln(so4); max:=so1;

min:=so1; If max < so2 Then max:=so2 Else min:=so2; If max < so3 Then max:=so3 Else min:=so3; If max < so4 Then max:=so4; Writeln; Writeln('+So lon nhat trong 4 so: ',so1,',',so2,',',so3,',',so4,' la: ',max); Writeln('+Va so nho nhat trong 4 so do la : ',min); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 220/Tinh dai vect : [CODE] Program Tinh_do_dai_vec_to; Var x,y,z:Integer; l:Real; Begin Writeln('TINH CHIEU DAI VECTO'); Writeln('---------------------'); Writeln; Write('-Cho biet toa do X : '); Readln(x); Write('-Cho biet toa do Y : '); Readln(y); Write('-Cho biet toa do Z : '); Readln(z); l:= Sqrt(Sqr(x) + Sqr(y) + Sqr(z)); Writeln('+Chieu dai cua vecto = ',l:10:2); Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 221/Tinh chu ki dao ng con lc: [CODE] Program Chu_ky_con_lac; Const g=918; Var l,t:Real; Begin Writeln('TINH CHU KY DAO DONG CON LAC DON'); Writeln('-----------------------'); Write('-Cho biet chieu dai con lac: '); Readln(l); t:=2*pi*sqrt(l/g); Writeln('+Chu ky dao dong dieu hoa cua con lac: ',t:10:3);

Readln; End. [/CODE] 222/Chu vi din tich hcn: [CODE] Program Chu_vi_Dien_tich; Var d,r,p,s:Integer; tiep:Char; (*------------------*) PROCEDURE Chuvi(x,y:Integer); Begin p:=(x+y)*2; End; (*------------------*) PROCEDURE Dientich(x,y:Integer); Begin s:=x * y; End; (*------------------*) BEGIN Repeat Writeln('TINH CHU VI, DIEN TICH HINH CHU NHAT'); Writeln(' Su dung thu tuc'); Writeln('------------------------------------'); Write('-Nhap chieu rong: '); Readln(r); Write('-Nhap chieu dai : '); Readln(d); Chuvi(r,d); Dientich(r,d); Writeln; Writeln('+Chu vi hinh chu nhat= ',p); Writeln('+Dien tich hinh chu nhat= ',s); Writeln; Write(' Co thuc hien tiep khong ? (c/k) '); Readln(tiep); Until (tiep='k') Or (tiep='K'); END. [/CODE] 223/Chu vi din tich vong tron: [CODE] Program Vong_tron; Var Radius,s,cv :Real; Begin Writeln('TINH CHU VI, DIEN TICH VONG TRON'); Writeln('--------------------------------'); Write('-Cho biet ban kinh : '); Readln(Radius); cv:=2*Pi*Radius; S:=Pi*Radius*Radius; Writeln; Writeln('+Chu vi vong tron = ',cv:10:2); Writeln('+Dien tich vong tron = ',s:10:2);

Writeln; Writeln(' Bam phim <Enter> de tro ve cua so soan thao'); Readln End. [/CODE] 224/Tinh dn s sau 5 nm: [CODE] Program Dan_so; Var i:Byte; sodan:LongInt; Begin Writeln('TINH DAN SO SAU 5 NAM'); Writeln('---------------------'); sodan:=5000000; Writeln('-So dan hien nay = ',sodan); Writeln('-Ty le tang dan so hang nam = 1.5%'); Writeln; Writeln('So dan tang tung nam trong 5 nam toi la:'); For i:=1 To 5 Do Begin sodan:=round(sodan * 1.015); Writeln('-Nam thu ',i,' so dan la: ',sodan,' nguoi'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 225/Tinh din tich hinh hoc s cp: [CODE] Program Hinh_hoc_so_cap; Var a,b,c,h,r:Integer; s:Real; chon:Byte; Begin Writeln('TINH DIEN TICH HINH HOC SO CAP'); Writeln('------------------------------'); Writeln(' 1-Hinh vuong'); Writeln(' 2-Hinh chu nhat'); Writeln(' 3-Hinh tam gia1c'); Writeln(' 4-Hinh thang'); Writeln(' 5-Hinh tron'); Writeln; Write('-Ban chon cac so tu 1 den 5 de tinh dien tich hinh tuong ung'); Readln(chon); Case chon Of 1 :Begin Write('-Nhap canh hinh vuong: '); Readln(a); s:=a*a; Writeln('+Dien tich hinh vuong = ',s:10:2,' met vuong'); End; 2 :Begin

Write('-Nhap chieu rong : '); Readln(a); Write('-Nhap chieu dai : '); Readln(b); s:=a*b; Writeln('+Dien tich hinh chu nhat = ',s:10:2,' met vuong'); End; 3 :Begin Write('-Nhap canh day : '); Readln(a); Write('-Nhap chieu cao : '); Readln(h); s:=a*h/2; Writeln('+Dien tich hinh tam giac = ',s:10:2,' met vuong'); End; 4 :Begin Write('-Nhap day duoi : '); Readln(a); Write('-Nhap day tren : '); Readln(b); Write('-Nhap chieu cao: '); Readln(h); s:=0.5*(a+b)*h; Writeln('+Dien tich hinh thang = ',s:10:2,' met vuong'); End; 5 :Begin Write('-Nhap ban kinh : '); Readln(r); s:=r*r*pi; Writeln('+Dien tich hinh tron = ',s:10:2,' met vuong'); End; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 226/Tinh giai th a cua n: [CODE] Program Giai_thua; Var n:Integer; (*---------------------*) FUNCTION Gt(x:Integer):Integer; Var k,s:Integer; Begin s:=1; For k:=1 To x Do s:=s*k; Gt:=s; End; (*---------------------*) BEGIN

Writeln('TINH GIAI THUA CUA N'); Writeln(' Su dung ham'); Writeln('--------------------'); Write('-Nhap N= '); Readln(n); Writeln; Writeln('+Giai thua cua ',n,' = ',Gt(n)); Writeln; Write(' Bam <Enter> de ket thuc '); Readln END. [/CODE] 227/Tinh gi phut giy: [CODE] Program Tinh_Gio_Phut_Giay; Var sogiay,gio,phut,giay:Integer; Begin Writeln('TINH GIO:PHUT:GIAY'); Writeln('------------------'); Write('-Nhap so giay can tinh: '); Readln(sogiay); gio:=sogiay DIV 3600; sogiay:= sogiay MOD 3600; phut:=sogiay DIV 60; giay:=sogiay MOD 60; Writeln; Writeln('KET QUA CHUYEN DOI'); Writeln('+Neu nhap vao: ',sogiay,' giay'); Writeln('+Doi thanh: ',gio,' gio, ',phut,' phut, ',giay,' giay'); Readln End. [/CODE] 228/Tinh khoang cach t 1 im n t: [CODE] Program Tinh_khoang_cach; Var a,b,c,d,x,y:Real; Begin Writeln('TINH KHOANG CACH TU 1 DIEM DEN DUONG THANG'); Writeln('------------------------------------------'); Write('-Nhap he so a= '); Readln(a); Write('-Nhap he so b= '); Readln(b); Write('-Nhap he so c= '); Readln(c); Write('-Nhap toa do x= '); Readln(x); Write('-Nhap toa do y= '); Readln(y); d:=((a*x) + (b*y) + c) / Sqrt(Sqr(a) + Sqr(b)); Writeln('+Khoang cach tu diem I den duong thang la: ',d:10:2); Readln End. [/CODE]

229/Tinh sin(x): [CODE] Program Tinh_sin; Var goc:Integer; rad,x:Real; Begin Writeln('TINH SIN(X)'); Writeln('-----------'); Write('-Nhap vao mot goc: '); Readln(goc); rad:=(pi * goc) / 180; x:=sin(rad); Writeln('+Sin(',goc:2,') = ',x:10:8); Readln; End. [/CODE] 230/Tinh tin g i ngn hang: [CODE] Program Tinh_tien; Var v:Integer; l,n:Real; Begin Writeln('TINH TIEN GUI NGAN HANG'); Writeln('-------------------'); Writeln; Write('-So tien gui = '); Readln(v); Write('-Lai suat = '); Readln(l); n:=(v * (1 + (l/100))); Writeln('*Neu gui: ',v,' dong, lai suat 1 nam= ',l:4:2,' %'); Writeln('*So tien lai trong 1 nam = ',Round(v*l/100),' dong'); Writeln('*Von + Lai trong 1 nam = ',Round(n),' dong'); Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 231/T h p chp k cua n: [CODE] Program To_hop_chp_k_cua_N; Var i,k,n:Integer; c:Real; Begin Writeln('TINH TO HOP CHAP k CUA N'); Writeln(' Voi k <= N'); Writeln('------------------------'); Write('-Nhap so N= '); Readln(n); Write('-Nhap so phan tu k= '); Readln(k); If k > N Then Writeln('+Vi k lon hon N nen khong tinh duoc')

Else Begin c:=1; For i:=1 To k Do c:=c*(n-k+i)/i; Writeln('+To hop chap ',k,' cua ',n,' la: ',c:2:2); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 232/Tng binh ph ng cac s le: [CODE] Program Tong_binh_phuong; Var i,n,tong:Integer; Begin Writeln('TINH TONG BINH PHUONG CAC SO LE'); Writeln(' Tu 1 den N'); Writeln('-------------------------------'); Write('-Nhap N= '); Readln(n); tong:=0; For i:=1 To N Do If odd(i) Then tong:=tong+sqr(i); Writeln; Writeln('+Tong binh phuong cac so le cua ',n,' so nguyen= ',tong); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 233/Tng nghich ao n s nguyn u tin: [CODE] Program Tong_nghich_dao; Var n,i:Integer; s:Real; Begin Writeln('TINH TONG NGHICH DAO N SO NGUYEN DAU TIEN'); Writeln('-----------------------------------------'); Write('-Nhap so N= '); Readln(n); S:=0; For i:= 1 To N Do S:=S+(1/i); Writeln; Writeln('+Tong nghich dao cua ',n,' so nguyen dau tien= ',S:0:2); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE]

234/Gia tri cua X luy th N: [CODE] Program Luy_thua; Var x,n,tich,luythua:Integer; Begin Writeln('TINH TRI CUA X LUY THUA N'); Writeln('-------------------------'); Write('-Nhap vao so X= '); Readln(x); Write('-Nhap vao luy thua N= '); Readln(n); tich:=1; luythua:=1; While luythua <= n Do Begin tich:=tich * x; luythua:=luythua + 1; End; Writeln; Writeln(x,' luy thua ',n,' = ',tich); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 235/ c chung l n nht, bi chung nho nht: [CODE] Program Uoc_so_chung_Boi_so_chung; Var so1,so2:Word; p:LongInt; tiep:Char; Begin Writeln('TINH UOC SO CHUNG LON NHAT, BOI SO CHUNG NHO NHAT'); Writeln(' Su dung vong lap Repeat... Until'); Writeln('-------------------------------------------------'); Repeat Writeln; Write('-Nhap so thu nhat: '); Readln(so1); Write('-Nhap so thu hai : '); Readln(so2); p:=so1 * so2; Write('+Uoc so chung lon nhat cua ',so1,' va ',so2,' la: '); Repeat if so1 > so2 Then so1:=so1 - so2 Else so2:=so2 - so1; Until so1=so2; Writeln(so1); Writeln; Writeln('+Boi so chung nho nhat: ',P Div so1); Writeln;

Write('-Co tiep tuc nua khong ? (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. [/CODE] 236/Tng tich ma trn: [CODE] Program Tong_Tich_Ma_tran; Uses Crt; Type Matran=array[1..3,1..3] Of Integer; Var a,b,c,d:Matran; i,j,k:Byte; Ch:Char; {*****************************} Procedure Nhap(Var m:Matran; Ten:Char); Begin ClrScr; GotoXY(26,6); Write('-Nhap ma tran: ',Ten); For i:=1 To 3 Do For j:=1 to 3 Do Begin GotoXY(20*i-8,10+2*j); Write(Ten,'[',i,',',j,']= '); Readln(m[i,j]); End; End; {*****************************} Procedure Xuat(m:Matran; Ten:Char); Begin ClrScr; GotoXY(26,6); Write('CAC PHAN TU CUA MA TRAN: ',Ten); For i:=1 To 3 Do For j:=1 To 3 Do Begin GotoXY(20*i-8,10+2*j); Write(Ten,'[',i,',',']= ',m[i,j]); End; End; {*****************************} BEGIN Nhap(a,'A'); Nhap(b,'B'); For i:=1 To 3 Do For j:=1 To 3 Do c[i,j]:=a[i,j]+b[i,j]; Writeln; Writeln('MA TRAN TONG');

Writeln; Xuat(c,'C'); GotoXY(10,25); Write('Bam phim <Esc> de xem ma tran tich'); For i:=1 to 3 Do For j:=1 To 3 Do Begin d[i,j]:=0; For k:=1 To 3 Do d[i,j]:=a[i,k]*b[k,j]+d[i,j]; End; Repeat Ch:=Readkey; If Ch=#0 then Ch:=Readkey; Until Ch=#27; Writeln('MA TRAN TICH= '); Xuat(d,'D'); Repeat Until KeyPressed; END. [/CODE] 237/Tro ch i One Two Three: [CODE] Program One_Two_Three; Var a,b:Char; Begin Writeln('TRO CHOI ONE TWO THREE'); Writeln(' Keo (k), Bua (b), Giay (g)'); Writeln('---------------------------'); Write('-Ban A chon: '); Readln(a); Write('-Ban B chon: '); Readln(b); Case Upcase(a) Of 'K': Case Upcase(b) Of 'K' : Begin Writeln('+Ban A chon Keo'); Writeln('+Ban B cung chon Keo'); Writeln('+Keo gap Kep, hoa nhau'); End; 'B' : Begin Writeln('+Ban A chon Keo'); Writeln('+Ban B chon Bua'); Writeln('+Bua dap Keo, B thang'); End; 'G' : Begin Writeln('+Ban A chon Keo'); Writeln('+Ban B chon Giay'); Writeln('+Keo cat Giay, A thang'); End; End; 'B': Case Upcase(b) Of

'K'

Begin chon Bua');

Writeln('+Ban A Writeln('+Ban B chon Keo'); Writeln('+Bua dap Keo, A thang'); End; 'B' : Begin Writeln('+Ban A Writeln('+Ban B cung chon Bua'); Writeln('+Bua gap Bua, hoa nhau'); End; 'G' : Begin Writeln('+Ban A Writeln('+Ban B chon Giay'); Writeln('+Giay boc Bua, B thang'); End; End; 'G': Case Upcase(b) Of 'K' : Begin Writeln('+Ban A Writeln('+Ban B chon Keo'); Writeln('+Keo cat Giay, B thang'); End; 'B' : Begin Writeln('+Ban A Writeln('+Ban B chon Bua'); Writeln('+Giay boc Bua, A thang'); End; 'G' : Begin Writeln('+Ban A Writeln('+Ban B cung chon Giay'); Writeln('+Giay gap Giay, hoa nhau'); End; End; End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 238/Ve hinh ch nht rng: [CODE] Program Ve_hinh_chu_nhat; CONST Hoathi='*'; Var r,d,i:Integer; tiep:Char; (*---------------*) PROCEDURE Ve(x,y:Integer); Var k:Integer; Begin For k:=1 To y Do Write(Hoathi);

chon Bua');

chon Bua');

chon Giay');

chon Giay');

chon Giay');

Writeln; For k:=1 To x-2 Do Writeln(Hoathi,Hoathi:y-1); For k:=1 To y Do Write(Hoathi); Writeln; End; (*---------------*) BEGIN Repeat Writeln('VE HINH CHU NHAT RONG'); Writeln(' Dung thu tuc'); Writeln('---------------------'); Write('-Chieu rong = '); Readln(r); Write('-Chieu dai = '); Readln(d); Ve(r,d); Writeln; Write(' Co tiep tuc khong ? (c/k) '); Readln(tiep); Until Upcase(tiep)='K'; END. [/CODE] 239/Ve tam giac rng: [CODE] Program Tam_giac_rong; Var cao,i:Byte; Begin Writeln('VE TAM GIAC RONG'); Writeln('----------------'); Write('-Nhap chieu cao cua tam giac: '); Readln(cao); Writeln('*':cao); For i:=2 To cao-1 Do Writeln('*':cao-i+1,'*':2*i-2); For i:=1 To 2*cao-1 Do Write('*'); Writeln; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 240/Xp loai hoc tp: [CODE] Program Phan_loai; Var ten:String; diem:Integer; Begin Writeln('XEP LOAI HOC TAP'); Writeln('----------------'); Write('-Cho biet ten: ');

Readln(ten); Write('-Cho biet diem: '); Readln(diem); Case diem Of 0,1,2,3,4: Begin Writeln('+Hoc sinh: ',ten); Writeln('+So diem : ',diem); Writeln('+Xep loai KEM'); End; Begin Writeln('+Hoc sinh: ',ten); Writeln('+So diem : ',diem); Writeln('+Xep loai TRUNG BINH'); End; Begin Writeln('+Hoc sinh: ',ten); Writeln('+So diem : ',diem); Writeln('+Xep loai KHA'); End; Begin Writeln('+Hoc sinh: ',ten); Writeln('+So diem : ',diem); Writeln('+Xep loai GIOI'); End; Begin Writeln('+Hoc sinh: ',ten); Writeln('+So diem : ',diem); Writeln('+Xep loai XUAT SAC'); End; Writeln('Khong co loai diem nay hoac ban go sai');

5,6:

7,8:

9:

10:

Else End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln End. [/CODE] 241/Ma trn chuyn vi: [CODE] Program Ma_tran_Chuyen_Vi; Uses Crt; Const Max=10; Var a:Array[1..Max, 1..Max] Of Integer; Procedure Tao; Var j,k:Integer; Begin Randomize; For k:=1 To Max Do For j:= 1 To Max Do a[k,j]:=Random(100); End; {----------------}

Procedure Xuat; Var k,j:Integer; Begin Window(5,3,36,24); For k:=1 to Max Do Begin For j:=1 To Max Do Write(a[k,j]:3); Writeln(#10); End; Window(45,3,76,24); For k:=1 To Max Do Begin If Odd(k) Then For j:= 1 To Max Do Write(a[k,j]:3) Else For J:=Max Downto 1 Do Write(a[k,j]:3); Writeln(#10); End; End; BEGIN ClrScr; Writeln('CHUYEN VI PHAN TU CUA MA TRAN'); Writeln(' --------------'); Tao; Xuat; Readln END. [/CODE] 242/Giai thut quicksort: [CODE] Program Gt_QuickSort; Uses Crt; Const Max=1000; Type Mang = Array[1..Max] Of Integer; Var a:Mang; i:Integer; {-------------------} Procedure Hoanvi(Var m,n : Integer); Var Tam:Byte; Begin Tam:=m; m:=n; n:=Tam; End; {-------------------} Procedure Xuat;

Var i:Integer; Begin ClrScr; For i:= 1 to Max Do Begin If i Mod 240 =0 Then Readln; Write(' ',a[i]:6,' '); End; End; {-------------------} Procedure Nhap; Var i:Integer; Begin For i:=1 To Max Do a[i]:=Random(1000); Writeln; Write(' *Bam phim <Enter> de xem danh sach sap xep'); Readln End; {-------------------} Procedure QuickSort(Var A: Mang; Lo,Hi: Integer); Procedure Sort(Left, Right:Integer); Var i,j,x:Integer; Begin i:=Left; j:=Right; x:=a[(Left + Right) Div 2]; Repeat While a[i] < x Do Inc(i); While x < a[j] Do Dec(j); If i <=j Then Begin Hoanvi(a[i],a[j]); Inc(i); Dec(j); End; Until i > j; If Left < j Then Sort(Left,j); If i < Right Then Sort(i,Right); End; Begin Sort(Lo,Hi); End; {-------------------}

BEGIN ClrScr; Writeln('GIAI THUAT QUICKSORT'); Writeln('--------------------'); Writeln; Nhap; Quicksort(a,1,Max); Xuat; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); Readln END. [/CODE] 243/Tim tun t : [CODE] Program Tim_Tuan_Tu; Uses Crt; Const Max= 100; Type Mang=Array[1..Max] Of Integer; Var Pti: Mang; So:Integer; {-----------------------------------} Function TuanTu(X:Integer; A:Mang;N:Integer):Integer; Var i:Integer; Begin i:=1; While (i <=N) And Not(X=A[i]) Do Inc(i); If i <=N Then TuanTu:=i Else TuanTu:=0; End; {-----------------------------------} Procedure TaoMang(Var A:Mang; N:Integer); Var i:Integer; Begin Randomize; For i:= 1 To N Do A[i]:=Random(3000); End; {-----------------------------------} Procedure InMang(A:Mang; N:Integer); Var i:Integer; Begin For i:= 1 To N Do Write(A[i]:8); Writeln;

End; {-----------------------------------} Procedure TimX(X:Integer; A:Mang; N:Integer); Var j:Integer; Begin j:=TuanTu(X,A,N); If j <> 0 Then Writeln('So: ',X:3,' la gia tri cua phan tu thu: ',j:2) Else Writeln('Khong co phan tu nao bang so : ',So); Writeln; End; {-----------------------------------} BEGIN ClrScr; Writeln('GIAI THUAT TIM KIEM TUAN TU'); Writeln('---------------------------'); Writeln; Writeln('-Tao 100 so ngau nhien'); TaoMang(Pti,100); Write('-Bam phim <Enter> de in mang '); Readln; InMang(Pti,100); Repeat Writeln; Write('-Ban can tim so nao: '); Readln(So); TimX(So,Pti,100); Write('Bam <Enter> de tim so khac, <Esc> de cham dut '); Until Readkey = #27; END. [/CODE] 244/Ban ghi va con tro: [CODE] Program Ban_ghi_va_Con_Tro; Uses Crt; TYPE ConTro = ^LyLich; LyLich = RECORD HoLot : String[17]; Ten : String[7]; BacLuong,PhuCap,Tong : LongInt; Next : ConTro; End; VAR First, Last, Newp : ConTro; Ch : Char; i : Integer; Begin ClrScr; GoToXY(5,25); Write('Bam nut bat ky de tiep tuc. Bam <Esc> de dung '); Window(1,1,80,24);

Writeln('** CHUONG TRINH TINH LUONG **'); Writeln; Writeln(' Thang 11 nam 1999'); First := NIL; {Khoi tao bien First la con tro rong} i := 0; Repeat i := i + 1; New(Newp); {Khoi tao bien cn tro moi la bien Newp} With Newp^ Do Begin Write('-Ho cua nguoi thu: ',i:2,' la= '); Readln(Holot); Write('-Ten = '); Readln(Ten); Write('-Bac luong = '); Readln(BacLuong); Write('-Phu cap = '); Readln(PhuCap); Tong := Trunc(BacLuong * 102.27) + PhuCap; End; If First = NIL Then First := Newp Else Last^.Next := Newp; Last := Newp; Last^.Next := NIL; Ch := Readkey; Until Ch = #27; Writeln; While First <> NIL Do With First^ Do Begin Writeln('-Ong ba: ',HoLot,' ',Ten); Writeln('-Bac luong: ',BacLuong:8,' -Phu cap: ',PhuCap : 6); Writeln('+Tien linh : ',Tong:8,' Dong'); First :=Next; Writeln; End; Readln End. [/CODE] 245/Qua trinh s dung bin con tro: [CODE] Program Con_Tro; VAR p, q : ^Integer; Begin Writeln('QUA TRINH SU DUNG BIEN CON TRO'); Writeln('------------------------------'); Writeln('-Buoc 1:Khai bao bien con tro p,q'); Writeln(' Vung nho bay gio la: ',MemAvail,' bytes'); Writeln; Writeln('-Buoc 2:Cap vung nho cho 2 bien dong p,q'); New(p); {Cap phat vung nho cho p^}

New(q); {Cap phat vung nho cho q^} Writeln(' Vung nho bay gio la: ',MemAvail,' bytes'); Writeln; Writeln('-Buoc 3:Dien noi dung vao vung nho va thao tac'); p^ := 1;{Dien noi dung vao vung nho cho p^} q^ := 1;{Dien noi dung vao vung nho cho q^} p^ := p^ + q^; {Thuc hien bieu thuc chua bien dong} Writeln('-p^ = ',p^); Writeln('-q^ = ',q^); Writeln; Writeln(' Vung nho bay gio la: ',MemAvail,' bytes'); Writeln; Writeln('-Buoc 4:Giai phong vung nho '); Dispose(p); Dispose(q); Writeln; Writeln(' Vung nho bay gio la: ',MemAvail,' bytes'); Readln End. [/CODE] 246/Thu tuc FREEMEN & DISPOSE: [CODE] Program Thu_Tuc_FreeMem_Dispose; VAR p1 : ^Integer; p2 : ^String; p3 : ^Real; k : Word; Begin Writeln('THU TUC FREEMEM VA DISPOSE'); Writeln('--------------------------'); Writeln('-Khi moi bat dau chuong trinh thi'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p1); P1^ :=12345; Writeln('-Noi dung cua bien dong P1 la: ',P1^); Writeln('-Sau khi cap phat bo nho cho bien dong P1 (kieu Integer)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; k := Sizeof(p2^); GetMem(p2,Sizeof(p2^)); P2^ :='Nha sach Minh Khai, 249 Nguyen Thi Minh Khai, Q1, Tel 8.331.124'; Writeln('-Noi dung cua bien dong P2 la: ',P2^); Writeln('-Sau khi cap phat bo nho cho bien dong P2 (kieu String)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p3); Writeln('-Sau khi cap phat bo nho cho bien dong P3 (kieu Real)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; Writeln('+ Bam phim <Enter> de xoa bien P1 bang thu tuc Dispose'); Readln; Dispose(p1);

Writeln('-Sau khi Xoa cac bien dong P1 (kieu Integer) '); Writeln('Vung nho Heap bay gio la: ',MemAvail,' bytes trong'); Writeln; Writeln('+ Bam phim <Enter> de xoa bien P2 bang thu tuc FreeMem'); Readln; Freemem(p2,k); Writeln('-Sau khi Xoa cac bien dong P2 (kieu String) '); Writeln('Vung nho Heap bay gio la: ',MemAvail,' bytes trong'); Writeln; Writeln('+ Bam phim <Enter> de xoa bien P3 bang thu tuc Dispose'); Readln; Dispose(p3); Writeln('-Sau khi Xoa cac bien dong P1 (kieu Integer) '); Writeln('Vung nho Heap bay gio la: ',MemAvail,' bytes trong'); Writeln; Writeln(' Bam phim <Enter> de ket thuc '); Readln End. [/CODE] 247/Thu tuc Dispose: [CODE] Program Thu_Tuc_Dispose; VAR p1 : ^Integer; p2 : ^String; p3 : ^Real; Begin Writeln('THU TUC DISPOSE'); Writeln('---------------'); Writeln('-Khi moi bat dau chuong trinh thi'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p1); Writeln('-Sau khi cap phat bo nho cho bien dong P1 (kieu Integer)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p2); Writeln('-Sau khi cap phat bo nho cho bien dong P2 (kieu String)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p3); Writeln('-Sau khi cap phat bo nho cho bien dong P3 (kieu Real)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; Dispose(p2); Writeln('-Sau khi Xoa cac bien dong P2 (kieu String) '); Writeln('Vung nho Heap bay gio la: ',MemAvail,' bytes trong'); Readln End. [/CODE] 248/Thu tuc release: [CODE] Program Thu_Tuc_Release; VAR p1 : ^Integer;

p2 p3 p Begin

: ^String; : ^Real; : Pointer;

Writeln('THU TUC RELEASE'); Writeln('---------------'); Writeln('-Khi moi bat dau chuong trinh thi'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p1); Writeln('-Sau khi cap phat bo nho cho bien dong P1 (kieu Integer)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; Mark(p); New(p2); Writeln('-Sau khi cap phat bo nho cho bien dong P2 (kieu String)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; New(p3); Writeln('-Sau khi cap phat bo nho cho bien dong P3 (kieu Real)'); Writeln('Vung nho Heap con: ',MemAvail,' bytes trong'); Writeln; Release(p); Writeln('-Sau khi Xoa cac bien dong P2 (kieu String) va P3 (kieu Real)'); Writeln('Vung nho Heap bay gio la: ',MemAvail,' bytes trong'); Readln End. [/CODE] 249/Danh sach vong: [CODE] Program Danh_Sach_Vong; Uses Crt; TYPE Chuoi = String[24]; NodePtr = ^Node; Node = RECORD Doivien : Chuoi; Next : NodePtr; End; VAR R : NodePtr; N : Word; HeapTop : Pointer; {--------------------------------------} Procedure Append(St : Chuoi); Var P : NodePtr; Begin New(P); P^.Doivien := St; If R = Nil Then R := P Else P^.Next := R^.Next;

R^.Next := P; R := P; End; {--------------------------------------} Function Next(P: NodePtr) : NodePtr; Begin If P <> R Then Next := P^.Next Else Next := Nil; End; {--------------------------------------} procedure Display; Var P : NodePtr; Begin ClrScr; P := R^.Next; While P <> Nil Do Begin Writeln(P^.Doivien); P := Next(P); End; End; {--------------------------------------} Procedure Input; Var St : Chuoi; Begin Writeln('NHAP DANH SACH DOI VIEN'); Writeln('-----------------------'); Writeln; Repeat Write('-Doi vien: '); Readln(St); Append(St); Writeln(' Bam <Enter> de nhap tiep, bam <Esc> de ngung '); Until Readkey = #27; End; {--------------------------------------} Procedure DeleteNode(N :Word; Var P : NodePtr); Var i : Word; Begin i := 1; While i < N-1 Do Begin P := P^.Next; Inc(i); End; If Next(P) = R Then R :=R^.Next; P^.Next := P^.Next^.Next;

P := P^.Next; End; {--------------------------------------} Procedure Loaibo; Var N,i : Word; P : NodePtr; Begin Write('-So de dem: '); Readln(n); If R <> Nil Then Begin P := R^.Next; While R^.Next <> R Do Begin DeleteNode(N,P); Display; GotoXY(10,22); Writeln('Bam phim <Enter> de chon doi vien ke tiep '); Readln; End; End; End; {--------------------------------------} BEGIN ClrScr; Mark(Heaptop); R := Nil; Input; ClrScr; Loaibo; ClrScr; Release(HeapTop); END. [/CODE] 250/DateObject: [CODE] Program DateObject; Uses Dos; {Su dung Unit Dos } TYPE Date = OBJECT Month,Day : Byte; Year : Word; Procedure Init(dd,mm,yy : Word); Function StrDate : String; End; VAR Today : Date; Regs : Registers; {----------------------------------} Procedure Date.Init; Begin Day := dd;

Month := mm; Year := yy; End; {----------------------------------} Function Date.StrDate; Var Strdd,Strmm,Stryy : String[4]; Begin Str(Day,Strdd); Str(Month,Strmm); Str(Year,Stryy); StrDate := Strdd + '/'+ Strmm + '/' + Stryy; End; {----------------------------------} BEGIN Writeln('DINH NGHIA KIEU CHA, KHONG DINH NGHIA KIEU CON'); Writeln(' Xem ngay hien hanh cua may'); Writeln('----------------------------------------------'); Writeln; Regs.Ah := 42; MsDos(Regs); With Regs Do Today.Init(dl, dh, cx); Writeln('-Hom nay la ngay: ',Today.StrDate); Writeln; Write(' Xem xong, bam <Enter>. . . '); Readln END. [/CODE] 251/Star: [CODE] Program Star; Uses Points, Graph, Crt; CONST Seed = 1999; NumPoints = 2000; VAR GrDriver, GrMode, Color : Integer; i, MaxColor : Word; XMax, YMax : Integer; Vp : ViewPortType; M : Point; BEGIN GrDriver :=CGA; GrMode := CGAC0; InitGraph(GrDriver, GrMode, 'C:\BP\BGI'); SetBkColor(Blue); MaxColor := GetMaxColor; Rectangle(0,0,GetMaxX, GetMaxY); SetViewport(i,i,GetMaxX-1,GetMaxY-1,ClipOn); GetViewSettings(Vp); With Vp Do Begin

Xmax := (X2 - X1); Ymax := (Y2 - Y1); End; Randomize; While Not KeyPressed Do Begin RandSeed := Seed; i := 0; While (Not KeyPressed) And ( i < NumPoints) Do Begin Inc(i); PutPixel(Random(Xmax)+1,Random(Ymax)+1,Random(MaxColor)+1); End; RandSeed := Seed; i := 0; While ( Not KeyPressed) And ( i < 2 * NumPoints) Do Begin M.Init(Random(Xmax)+1,Random(Ymax)+1); Color := GetPixel(M.X,M.Y); If Color = Random(GetMaxColor) + 1 Then M.Hide Else M.Show; Inc(i); End; End; END. [/CODE] 252/Ph ng th c trung tn: [CODE] Program Phuong_Thuc_Trung_Ten; TYPE Father = OBJECT Procedure A; Procedure B; End; Child = OBJECT( Father ) Procedure B; End; VAR F : Father; C : Child; {----------------------------------} Procedure Father.A; Begin Writeln('Phuong thuc A cua kieu CHA'); End; {----------------------------------} Procedure Father.B; Begin Writeln('Phuong thuc B cua kieu CHA'); End; {----------------------------------} Procedure Child.B;

Begin Writeln('Phuong thuc B cua kieu CON'); End; {----------------------------------} BEGIN Writeln('---------- Goi F.B -----------'); F.B; Writeln('---------- Goi C.B -----------'); C.B; Readln; END. [/CODE] 253/Virtual Constructor: [CODE] Program Virtual_Constructor; TYPE Father = OBJECT Constructor Init; Procedure A; Procedure B ; Virtual; End; Child = OBJECT( Father ) Procedure B; Virtual; End; VAR F : Father; C : Child; D : Child; {----------------------------------} Constructor Father.Init; Begin End; {----------------------------------} Procedure Father.A; Begin Writeln('Phuong thuc A cua kieu CHA'); End; {----------------------------------} Procedure Father.B; Begin Writeln('Phuong thuc B cua kieu CHA'); End; {----------------------------------} Procedure Child.B; Begin Writeln('Phuong thuc B cua kieu CON'); End; {----------------------------------} BEGIN F.Init ; {Khoi dong F va tao VMT cho kieu cha } C.Init ; {Khoi dong F va tao VMT cho kieu con } D.Init ; {Khoi dong F va tao VMT cho kieu con } Writeln('---------- Goi F.B -----------'); F.B;

Writeln('---------- Goi C.B -----------'); C.B; Writeln('---------- Goi D.B -----------'); D.B; Readln; END. [/CODE] 254/ND_Constructor: [CODE] Program ND_Constructor; Uses Graph; TYPE Point = OBJECT X,Y : Integer; Constructor Init(InitX,InitY : Integer); Procedure Show; Virtual; Procedure MoveTo(NewX,NewY: Integer); End; Circle = OBJECT(Point) Radius : Integer; Constructor Init(InitX,InitY,InitRadius : Integer); Procedure Show;Virtual; End; Arc = OBJECT(Circle) StartAngle,EndAngle : Integer; Constructor Init(InitX,InitY,InitRadius,InitS,InitE:Integer); Procedure Show;Virtual; End; VAR M : Point; C : Circle; A : Arc; GrDriver,GrMode : Integer; {-------------------------------------} Constructor Point.Init; Begin X := InitX; Y := InitY; End; {-------------------------------------} Procedure Point.Show; Begin PutPixel(X,Y,1); End; {-------------------------------------} Procedure Point.MoveTo; Begin X := NewX; Y := NewY; End; {-------------------------------------} Constructor Circle.Init;

Begin Point.Init(InitX,InitY); Radius := InitRadius; End; {-------------------------------------} Procedure Circle.Show; Begin Graph.Circle(X,Y,Radius); End; {-------------------------------------} Constructor Arc.Init; Begin Circle.Init(InitX,InitY,InitRadius); StartAngle := InitS; EndAngle := InitE; End; {-------------------------------------} Procedure Arc.Show; Begin Graph.Arc(X,Y,Radius,StartAngle,EndAngle); End; {-------------------------------------} BEGIN GrDriver := CGA; GrMode := CGAC0; InitGraph(GrDriver,GrMode,'C:\BP\BGI'); SetBkColor(Blue); M.Init(GetMaxX Div 2, GetMaxY Div 2); M.Show; C.Init(GetMaxX Div 2, GetMaxY Div 2, GetMaxY Div 2); C.Show; A.Init(GetMaxX Div 2, GetMaxY Div 2, GetMaxX Div 4,0,60); A.Show; A.MoveTo(GetMaxX Div 3,GetMaxY Div 2); A.Show; Readln; CloseGraph; END. [/CODE] 255/Bang l ng giac: [CODE] Program Bang_Luong_Giac; CONST g='|'; Var F : Text; k : Integer; Rad,S,C,T,CT : Real; {-------------------------------} Function Replicate(Chu:Char;Times:Integer):String; Var j : Integer; Tam :String[80]; Begin

Tam := ' '; For j := 1 To Times Do Tam := Tam + Chu; Replicate := Tam; End; {-------------------------------} BEGIN Assign(f,'BLGIAC.DAT'); Rewrite(f); Writeln(f,' * BANG LUONG GIAC *'); Writeln(f); Writeln(f,Replicate(#205,58)); Writeln(f,g,' DO ',g,' RADIAN ',g,' SIN ',g,' COSIN ', g,' TAN ',g,' COTANG ',g); Writeln(f,Replicate(#205,58)); For k := 1 To 89 Do Begin Rad := k * Pi /180; S := Sin(Rad); C := Cos(Rad); T := S/C; CT := 1/t; Writeln(f,g,k:2,g,Rad:10:8,g,S:10:8,g,C:10:8,g,T:10:6,g,CT:10:6,g); End; Writeln(f,Replicate(#205,58)); Flush(f); Close(f); END. [/CODE] 256/Minh hoa tp tin thit bi KDB: [CODE] Program Tap_tin_Kbd; Uses Crt,Turbo3; Var a: Array[1..20] Of String[15]; Item,Wide,i,j: Integer; Choose : String[5]; Ch : Char; Begin ClrScr; Writeln('MINH HOA TAP TIN THIET BI KBD'); Writeln('-----------------------------'); Writeln; Write('-Cho biet so tieu de: '); Readln(Item); Write('-Do rong cac tieu de: '); Readln(Wide); For i := 0 To Item - 1 Do Begin Write('-Tieu de thu: ',i+1,' : '); Readln(a[i]); End; ClrScr; GotoXY(10,3);

j := Wide; Ch := 'M'; For i := 0 To Item - 1 Do Write(a[i] : Wide); i := 0; While Ch < 'M' Do Begin If J < Wide Then j := j + (Item * Wide); If i = -1 Then i := Item - 1; i := i Mod Item; j := j Mod ((Item + 1) * Wide); If j = 0 Then j := Wide; GotoXY(10 - Wide + j,3); Normvideo; Write(a[i]:Wide); Read(Kbd,Ch); If KeyPressed Then Begin Read(Kbd,Ch); End; Lowvideo; GotoXY(WhereX-Wide, WhereY); Write(a[i] : Wide); GotoXY(WhereX + Wide, WhereY); Normvideo; If (Ord(Ch) = 77) Then Begin i := i + 1; j := j + Wide; End Else If (Ord(Ch) = 75) Then Begin i := i - 1; j := j - Wide; End; If(Ord(Ch) = 13) Then Begin Choose := a[i]; GotoXY(50,20); Writeln('Bam vua chon: ',Choose); Readln; Ch := 'Y'; End; End; End. [/CODE] 257/In bang l ng giac: [CODE] Program In_Bang_Luong_Giac; Uses Printer;

CONST g='|'; Var k : Integer; Rad,S,C,T,CT : Real; {-------------------------------} Function Replicate(Chu:Char;Times:Integer):String; Var j : Integer; Tam :String[80]; Begin Tam := ' '; For j := 1 To Times Do Tam := Tam + Chu; Replicate := Tam; End; {-------------------------------} BEGIN Writeln(Lst,' '); Writeln(Lst,' '); Writeln(Lst,' * BANG LUONG GIAC *'); Writeln(Lst,' '); Writeln(Lst,Replicate(#205,58)); Writeln(Lst,g,' DO ',g,' RADIAN ',g,' SIN ',g,' COSIN ', g,' TAN ',g,' COTANG ',g); Writeln(Lst,Replicate(#205,58)); For k := 1 To 89 Do Begin Rad := k * Pi /180; S := Sin(Rad); C := Cos(Rad); T := S/C; CT := 1/t; Writeln(Lst,g,k:2,g,Rad:10:8,g,S:10:8,g,C:10:8,g,T:10:6,g,CT:10:6,g); End; Writeln(Lst,Replicate(#205,58)); END. [/CODE] 258/Tao Buffer: [CODE] Program Tao_Buffer; Var f : Text; Filename : String[20]; Ch : Char; Buf : Array[1..10240] Of Char; Begin Writeln('MINH HOA THU TUC SETTEXTBUF()'); Writeln('-----------------------------'); Writeln; Write('-Cuo biet ten tap tin: '); Readln(Filename); Assign(f, Filename); SetTextBuf(f,Buf);

Reset(f); While Not EOF(f) Do Begin Read(f,Ch); Write(Ch); End; Readln; End. [/CODE] 259/Ngay gi cp nht tp tin: [CODE] Program Ngay_Gio_Cap_nhat_Tap_Tin; Uses Dos; Var f : Text; Filename : String[20]; Time : LongInt; Dt : DateTime; Begin Writeln('MINH HOA THU TUC GETFTIME()'); Writeln('---------------------------'); Writeln; Write('-Cho biet ten tap tin: '); Readln(Filename); Writeln; Assign(f,Filename); Reset(f); If DosError <> 6 Then Begin GetFTime(f,Time); UnpackTime(Time,DT); Writeln('+Tap tin: ',Filename,' duoc cap nhat lan cuoi'); Writeln(' -Ngay : ',DT.Day); Writeln(' -Thang : ',DT.Month); Writeln(' -Nam : ',DT.Year); Writeln(' -Hoi : ',DT.Hour,' gio ',DT.Min,' phut ',DT.Sec,' giay'); Close(f); End Else Writeln('-Ma loi: ',DosError); Writeln; Write(' Bam <Enter>... '); Readln End. [/CODE] 260/Xem ngay h thng: [CODE] Program Xem_Ngay_He_Thong; Uses Dos; Var Nam,Thang,Ngay,Thu : Word; TenThu : String[10]; Begin Writeln('MINH HOA THU TUC GETDATE()'); Writeln('--------------------------');

Writeln; Write(' Hom nay la ngay nao ? '); GetDate(Nam,Thang,Ngay,Thu); Case Thu Of 0 : TenThu := 'Chu Nhat'; 1 : TenThu := 'Thu Hai'; 2 : TenThu := 'Thu Ba'; 3 : TenThu := 'Thu Tu'; 4 : TenThu := 'Thu Nam'; 5 : TenThu := 'Thu Sau'; 6 : TenThu := 'Thu Bay'; End; Writeln; Writeln(' Hom nay la : '); Writeln(' +Thu : ',TenThu); Writeln(' +Ngay : ',Ngay); Writeln(' +Thang: ',Thang); Writeln(' +Nam : ',Nam); Writeln; Write(' Bam <Enter>... '); Readln End. [/CODE] 261/S a ngay: [CODE] Program Sua_Ngay; Uses Dos; Var Nam,thang,ngay,Thu: Word; Tenthu : String[3]; Begin Writeln('MINH HOA THU TUC SETDATE()'); Writeln('--------------------------'); Writeln; Write('Hom nay la: '); GetDate(Nam,Thang,Ngay,Thu); Case Thu Of 0 : TenThu := 'Sun'; 1 : Tenthu := 'Mon'; 2 : Tenthu := 'Tue'; 3 : Tenthu := 'Wed'; 4 : Tenthu := 'Thu'; 5 : Tenthu := 'Fri'; 6 : Tenthu := 'Sat'; End; Write(Thang,'-',Ngay,'-',Nam,' ',TenThu,' : '); Writeln; Write('-Sua lai thang: '); Readln(Thang); Write('-Sua lai ngay: '); Readln(Ngay); Write('-Sua lai nam: '); Readln(Nam); SetDate(Nam,Thang,Ngay);

Writeln; Writeln(' Readln End. [/CODE]

Da sua xong, bam <Enter>... ');

263/Khung ch nht net kep: [CODE] Program Khung_chu_Nhat_net_kep; Uses Crt; Var x1,y1,x2,y2 : Integer; {--------------------------------} Procedure VeKhung(x1,y1,x2,y2,mau1,mau2: Integer); Var i : Byte; Begin TextColor(mau1); TextBackGround(mau2); For i := X1 + 1 To x2-1 Do Begin GotoXY(i,y1); Write(#205); GotoXY(i,y2); Write(#205); End; For i := y1 + 1 To y2 - 1 Do Begin GotoXY(x1,i); Write(#186); GotoXY(x2,i); Write(#186); End; GotoXY(x1,y1); Write(#201); GotoXY(x2,y1); Write(#187); GotoXY(x1,y2); Write(#200); GotoXY(x2,y2); Write(#188) End; {--------------------------------} BEGIN ClrScr; Writeln('-Toa do goc tren ben trai: '); Write(' +X1 = '); Readln(x1); Write(' +Y1 = '); Readln(y1); Writeln('-Toa do goc duoi ben phai: '); Write(' +X2 = '); Readln(x2); Write(' +Y2 = '); Readln(y2);

ClrScr; VeKhung(x1,y1,x2,y2,Red,black); Readln; Normvideo; END. [/CODE] 264/Card_Mode man hinh: [CODE] Program Card_Mode_man_hinh; Uses Graph; Var Gd,Gm : Integer; kieu : Word; Cardmode : String; Begin DetectGraph(Gd,Gm); InitGraph(Gd,Gm,'C:\BP\BGI'); Cardmode := GetDriverName; Kieu := GetMaxMode; CloseGraph; Writeln('-Ten card man hinh: ',Cardmode); Writeln('-Ten mode man hinh: ',kieu); Readln End. [/CODE] 265/Li kh i ng: [CODE] Program Loi_Khoi_Dong; Uses Graph; Var Gd,Gm : Integer; kieu : Word; Cardmode : String; Begin DetectGraph(Gd,Gm); InitGraph(Gd,Gm,'Path'); Cardmode := GetDriverName; Writeln(GraphErrorMsg(GraphResult)); Write('Bam <Enter> de tiep tuc '); Readln; DetectGraph(Gd,Gm); InitGraph(Gd,Gm,'C:\BP\BGI'); Kieu := GetMaxMode; CloseGraph; Writeln('-Ten card man hinh: ',Cardmode); Writeln('-Ten mode man hinh: ',kieu); Readln End. [/CODE] 266/Thu tuc ham tin nghi: [CODE] Program ThuTuc_Ham_Tien_nghi; Uses Graph,Crt; Var Gd,Gm,LoMode,HiMode,MaxMode : Integer; CenterX,CenterY : Word;

CardMonitor : String; Begin DetectGraph(Gd,Gm); Writeln('-Chi so card man hinh: ',Gd); Writeln('-Chi so mode man hinh: ',Gm); Initgraph(Gd,Gm,'A:'); {Co y sai de thong bao loi} Writeln(GraphErrorMsg(GraphResult)); GotoXY(5,25); Write('Bam <Enter>... '); Readln; Gd := CGA; Gm := CGAC2; InitGraph(Gd,Gm,'C:\BP\BGI'); CenterX := GetMaxX Div 2; {Toa doo con tro} CenterY := GetMaxY Div 2; MaxMode := GetMaxMode; CardMonitor := GetDriverName; Circle(CenterX,CenterY,CenterY); Readln; GraphDefaults; SetColor(1); Circle(CenterX,CenterY,CenterY); GetModeRange(Gd,LoMode,HiMode); Readln; CloseGraph; Writeln('-TenCard : ',CardMonitor); Writeln('-Mode toi da : ',MaxMode); Writeln('-Mode thap : ',LoMode); Writeln('-Mode cao : ',HiMode); Readln; End. [/CODE] 267/Tao c a s: [CODE] Program Tao_Cua_So; Uses Graph,Crt; Const n : Byte = 20; Var Gd,Gm : Integer; {------------------------------} Procedure SetViewBox(x1,y1,x2,y2: Integer; Clip:Boolean); Begin SetViewPort(x1,y1,x2,y2,Clip); Rectangle(0,0,x2-x1,y2-y1); End; {------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOK Then Halt; SetViewBox(2*n,2*n,GetMaxX,GetMaxY,ClipOn); OutTextXY(20,2,'Xin Chao nam 2000');

Repeat Until KeyPressed; SetPalette(0,1); SetViewBox(0,0,GetMaxX-n,GetMaxY-n,ClipOn); OutTextXY(30,2,'Xin chao The ky 21'); Readln; CloseGraph; END. [/CODE] 268/Tao xoa c a s: [CODE] Program Tao_Xoa_Cua_So; Uses Graph; Var Gd,Gm : Integer; Vp : ViewPortType; k : Word; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); Rectangle(0,0,GetMaxX,39); SetTextJustify(CenterText,CenterText); {Chinh giua} SetTextStyle(TriplexFont,Horizdir,3); {Font va huong xuat} OutTextXY(GetMaxX Div 2,15,'Nha sach Minh Khai'); Rectangle(0,40,GetMaxX,GetMaxY); SetViewPort(1,41,GetMaxX-1,GetMaxY-1,ClipOn); ClearViewPort; GetViewSettings(Vp); k := (Vp.y2-Vp.Y1) Div 20; With Vp Do Repeat Circle((x2-x1) Div 2,(y2-y1) Div 2, k); Inc(k,(y2-y1) Div 20); Until k > (y2-y1); Readln; ClearViewPort; k := (Vp.y2-Vp.Y1) Div 20; With Vp Do Repeat Rectangle(x1+k,y1+k,x2-k,y2-k); Inc(k,(y2-y1) Div 20); Until (k > (y2-y1) Div 2); Readln; ClearDevice; SetViewPort(0,0,GetMaxX,GetMaxY,ClipOn); Circle(GetMaxX Div 2, GetMaxY Div 2, GetMaxY Div 2); Readln; CloseGraph; End. [/CODE] 269/Bu tr i y sao: [CODE] Program Bau_Troi_Day_Sao; Uses Graph,Crt; Var

Gd,Gm : Integer; Begin Gd := CGA; Gm := CGAhi; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt; Randomize; While Not KeyPressed Do PutPixel(Random(GetMaxX Div 8)*8, Random(GetMaxY Div 3)*3,Random(2)); CloseGraph; End. [/CODE] 270/Vong tron: [CODE] Program Vong_Tron; Uses Graph; Const Radius = 10; Type Point = RECORD X,Y : Integer; End; Var Gd,Gm : Integer; CenterX,CenterY : Integer; M : Array[1..15] Of Point; i,k : Integer; Xasp,Yasp : Word; {--------------------------------------} Function AdJasp(Value : Integer): Integer; Begin Adjasp := Longint(Value)*Xasp Div Yasp; End; {--------------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); SetBkColor(Blue); CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; GetAspectRatio(Xasp,Yasp); For i := 1 To 15 Do With M[k] Do Begin X := CenterX +Round(Radius*Sin(2*k*pi/15)); Y := CenterY + AdjAsp(Round(Radius*Cos(2*k*pi/15))); End; Circle(CenterX,CenterY,Radius); For i := 1 To 15 Do For k := 1 To 15 Do Line(M[k].X,M[k].Y,M[i].X,M[i].Y); Readln;

CloseGraph; END. [/CODE] 270/Ty l truc: [CODE] Program Ty_le_Truc; Uses Graph; Const Xasp : Word = 1; Yasp : Word = 1; Var Gd,Gm : Integer; CenterX,CenterY,Rad : Integer; Ch : Char; i : Byte; Begin Gd := CGA; Gm := CGAHi; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt; CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; Rad := GetMaxY Div 2; For i := 1 To 24 Do Writeln; {xoa man hinh van ban khong dung Crt} Repeat SetAspectRatio(Xasp,Yasp); Circle(CenterX,CenterY,Rad); Write('Sua lai ty le (Y/N) '); Readln(Ch); Ch := Upcase(Ch); If Ch = 'Y' Then Begin Write('-Nhap ty le X Y: '); Readln(Xasp,Yasp); End; For i := 1 To 24 Do Writeln; Until Ch ='N'; CloseGraph; End. [/CODE] 271/Ve ng h: [CODE] Program Ve_Dong_ho; Uses Graph, Crt; Const x : Integer = -90; Var Gd,Gm : Integer; CenterX,CenterY,R : Integer; C : Real; Begin Gd := Detect;

InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt; CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; SetAspectRatio(1,2); R := GetMaxY Div 3; Circle(CenterX,CenterY,R); C := pi/180; SetLineStyle(Solidln,0,ThickWidth); Repeat Moveto(CenterX,CenterY); SetColor(13); LineRel(Trunc((R-5)*Cos(c*x)),Trunc((R-5)*Sin(c*x)) Div 2); Delay(1000); SetColor(0); Moveto(CenterX,CenterY); LineRel(Trunc((R-5)*Cos(c*x)),Trunc((R-5)*Sin(c*x)) Div 2); Inc(x,6); Until KeyPressed; CloseGraph; End. [/CODE] 272/Bang mau: [CODE] Program Bang_Mau; Uses Graph,Crt; Var Gd,Gm : Integer; Ch : Char; k : Byte; Result : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); Repeat Ch := Readkey; Val(Ch,k,Result); Setcolor(k); SetBkColor(k+3); Line(0,0,GetMaxX,GetMaxY); Until Ch = #27; End. [/CODE] 273/Bu tr i y sao (code 2): [CODE] Program Bau_Troi_Day_Sao; Uses Graph,Crt; Const MaxColor = 15; {------------------------------} Procedure KhoiDong(Path:String); Var Gd,Gm,Gr : Integer; Begin

DetectGraph(Gd,Gm); InitGraph(Gd,Gm,Path); Gr := GraphResult; If Gr <> GrOk Then Begin Writeln('Loi khoi dong: ',GraphErrorMsg(Gr)); Halt(1); End; End; {------------------------------} Function RandColor : Word; {Tao mau ngau nhien} Begin RandColor := Random(MaxColor)+1; End; {------------------------------} Procedure VeSao; {Ve bau troi day sao hien va tat} Const Seed = 1000; NumPts = 1200; Esc = #27; Var i,x,y,Color : Word; XMax, YMax : Integer; Vi : ViewPortType; Begin GetViewSettings(Vi); {Pham vi cua so} With Vi Do Begin XMax := (x2-(x1+1)); YMax := (Y2-(Y1+1)); End; Repeat RandSeed := Seed; {Hien ngoi sao} i := 0; While (Not KeyPressed) And (i < NumPts) Do Begin Inc(i); PutPixel(Random(Xmax)+1,Random(YMax)+1,RandColor); Delay(50); End; RandSeed := Seed; {lam tat cac ngoi sao} i := 0; While (Not KeyPressed) And (i < NumPts) Do Begin Inc(i); X := Random(XMax)+1; Y := Random(YMax)+1; Color := GetPixel(X,Y); if Color = RandColor Then PutPixel(x,y,0); End; Until KeyPressed;

End; {------------------------------} BEGIN KhoiDong('C:\BP\BGI'); VeSao; CloseGraph; END. [/CODE] 274/Line Demo: [CODE] Program LineDemo; Uses Crt,Graph; Var MaxX,MaxY,ErrorCode,Gd,Gm : Integer; {-----------------------------------------} Procedure PlotLine(x1,y1,x2,y2,Color : Integer); Var a,b : Real; Dx,Dy,x,y,i : Integer; {-----------------------------------------} Procedure Switch(Var x,y : Integer); Var t : Word; Begin t := x; x := y; y := t; End; {-----------------------------------------} Begin If Abs(x1-x2) > Abs(y1-y2) Then Begin If x1 > x2 Then Begin Switch(x1,x2); Switch(y1,y2); End; Dx := (x2-x1); Dy := (y2-y1); If Dx <> 0 Then b :=Dy /Dx Else b := 0; a := y1 -x1*b; For x := x1 To x2 Do Begin y := Round(a+x*b); PutPixel(x,y,Color); End; End Else Begin

If y1 > y2 Then Begin Switch(y2,y1); Switch(x1,x2); End; Dx := (x2-x1); Dy := (y2-y1); If Dx <> 0 Then b := Dy / Dx Else b := 0; a :=y1 - x1*b; For y := y1 To y2 Do Begin If b <> 0 Then x := Round((y-a)/b) Else x := 0; PutPixel(x,y,Color); End; End; End; {-----------------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); ErrorCode := GraphResult; If ErrorCode <> GrOk Then Begin Writeln('Loi do hoa: ',GraphErrorMsg(ErrorCode)); Halt; End; MaxX := GetMaxX; MaxY := GetMaxY; Repeat Plotline(Random(MaxX), Random(MaxY), Random(maxX), Random(MaxY), Magenta); Until KeyPressed; CloseGraph; END. [/CODE] 275/Ve ng: [CODE] Program Ve_duong; Uses Crt,Graph; Type Point = RECORD x,y : Integer; End;

Var Gd,Gm,k,CenterX,CenterY: Integer; M : Point; Radius,Color : ShortInt; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; Randomize; Color := 0; Repeat Color := Color + 1; Color := Color Mod 3+1; M.x := Random(GetMaxX); M.y := Random(GetMaxY); SetColor(Color); Line(CenterX,CenterY,M.x,M.y); Until KeyPressed; End. [/CODE] 276/ ng net: [CODE] Program Duong_Net; Uses Graph; Const x : Array[1..4] Of Integer =(10,10,200,150); Var Gd,Gm : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); SetLineStyle(DottedLn,0,NormWidth); Rectangle(x[1],x[2],x[3],x[4]); Circle(GetMaxX Div 2,GetMaxY Div 2, 80); Readln; SetLineStyle(UserBitLn,$AA,ThickWidth); Rectangle(x[1],x[2],x[3],x[4]); Circle(GetMaxX Div 2,GetMaxY Div 2, 80); Readln; CloseGraph; End. [/CODE] 277/Chon Mode: [CODE] Program Chon_Mode; Uses Crt, Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {---------------------------------} Function RandColor : Word; Begin RandColor := Random(MaxColor)+1;

End; {---------------------------------} Procedure WriteModePlay; Const DelayValue = 50; Var ViewInfo : ViewPortType; Color : Word; Left,top : Integer; Right,Bottom : Integer; Step : Integer; Begin Rectangle(9,9,GetMaxX-9,GetMaxY-9); SetViewPort(10,10,GetMaxX-10,GetMaxY-10,ClipOn); GetViewSettings(ViewInfo); Left := 0; Top := 0; Right := ViewInfo.x2-ViewInfo.x1; Bottom := ViewInfo.y2-ViewInfo.y1; Step := Bottom Div 50; SetColor(GetMaxColor); Line(Left,Top, Right,Bottom); Line(Left,Bottom,Right,Top); SetWriteMode(XorPut); Repeat Line(Left,Top, Right,Bottom); Line(Left,Bottom,Right,Top); Rectangle(Left,Top, Right,Bottom); Delay(DelayValue); Line(Left,Top, Right,Bottom); Line(Left,Bottom,Right,Top); Rectangle(Left,Top, Right,Bottom); If (Left+Step < Right) And (Top+Step < Bottom) Then Begin Inc(Left,Step); Inc(Top,Step); Dec(Right,Step); Dec(Bottom,Step); End Else Begin Color :=RandColor; SetColor(Color); Left := 0; Top := 0; Right :=ViewInfo.x2-ViewInfo.x1; Bottom := ViewInfo.y2 - ViewInfo.y1; End; Until KeyPressed; SetWriteMode(CopyPut); End; {---------------------------------} BEGIN

Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt; WriteModePlay; Readln; CloseGraph; END. [/CODE] 278/ng h: [CODE] Program Dong_Ho; Uses Crt,Dos,Graph; {-------------------------------} Procedure EnterGraph(Path:String); Var Gd,Gm,Gr :Integer; Begin Gd :=Detect; InitGraph(Gd,Gm,'Path'); Gr := GraphResult; If Gr <> GrOk Then Begin Writeln('Thong bao loi: ',GraphErrorMsg(Gr)); End; End; {-------------------------------} Procedure Draw(L,Ao: Real); Begin LineTo(GetX+Round(L*Cos(pi*Ao/180)), GetY - Round(L*Sin(pi*Ao/180))); End; {-------------------------------} Procedure Needle1(L,alpha,Angle : Real); {kim gio,phut} Var p,p1 : PointType; Begin p.x := GetX; p.y := GetY; p1.x := P.x + Round(L*Cos(pi*Angle/180)); p1.y := P.y + Round(L*Sin(pi*Angle/180)); Draw(L/10,Angle-Alpha); LineTo(p1.x,p1.y); LineTo(p.x,p.y); Draw(L/10,Angle+Alpha); LineTo(p1.x,p1.y); MoveTo(p.x,p.y); Draw(L/10,Angle+180-Alpha); Draw(L/10,Angle+180+Alpha); Draw(L/10,Angle-Alpha); Draw(L/10,Angle+Alpha); End; {-------------------------------} Procedure Needle2(L,Angle:Real); {Ve kim giay}

Var p : PointType; Begin p.x := GetX; p.y := GetY; Draw(L,Angle); MoveTo(p.x,p.y); Draw(L/10,180+Angle); MoveTo(p.x,p.y); End; {-------------------------------} Procedure HourNeedle(Hangle:Real); {Kim gio,chieu dai va goc} Begin SetColor(DarkGray); Needle1(GetMaxY/4,45,HAngle); End; {-------------------------------} Procedure MinNeedle(MAngle : Real); {Kim phut,chieu dai va goc} Begin SetColor(LightGray); Needle1(GetMaxY/4+50,20,MAngle); End; {-------------------------------} Procedure SecNeedle(SAngle : Real); {Kim giay,chieu dai va goc} Begin SetColor(Green); Needle2(GetMaxY/4+70,SAngle); End; {-------------------------------} Procedure ShowTime; {3 kim quay theo gio he thong} Var Hour,Min,Sec,Sec100:Word; CurHA,CurMA,CurSA, OldHA,OldMA,OldSA : Real; Begin SetWriteMode(XorPut); GetTime(Hour,Min,Sec,Sec100); CurSA := 90 -360*Sec/60; CurMA := 90 -360 *Min/60; CurHA := 90-360*Hour/12-30*Min/60; OldSA := CurSA; OldMA := CurMA; OldHA := CurHA; SecNeedle(CurSA); MinNeedle(CurMA); HourNeedle(CurHA); While Not KeyPressed Do Begin CurMA := 90 - 360*Min/60; CurHA :=90 - 360*Hour/12-30*Min/60; If OldMA <> CurMA Then Begin MinNeedle(OldMA);

MinNeedle(CurMA); OLdMA := CurMA; End; If OldHA <> CurHA Then Begin HourNeedle(OldHA); HourNeedle(CurHA); OLdHA := CurHA; End; Repeat GetTime(Hour,Min,Sec,Sec100); CurSA := 90-360*Sec/60; If OldSA <> CurSA Then Begin SecNeedle(OldSA); SecNeedle(CurSA); OLdSA := CurSA; End; Until KeyPressed Or (Sec = 0); End; End; {-------------------------------} BEGIN EnterGraph('C:\BP\BGI'); MoveTo(GetMaxX Div 2,GetMaxY Div 2); ShowTime; CloseGraph; END. [/CODE] 279/a giac u: [CODE] Program Da_giac_Deu; Uses Graph; Const Max =10; Type Polygon = Array[1..Max] Of PointType; Var Gd,Gm : Integer; Po : PointType; P : Polygon; Ao,R : Real; {--------------------------------------} Procedure MakeNGon(R:Real;N:Integer;Po:PointType; Ao:Real;Var P:Polygon); Var i :Integer; Angle : Real; Begin If (N < 3) Or (N > Max) Then Halt(1); For i := 1 To N Do With P[i] Do Begin

Angle := 2*Pi*((i-1)/N+Ao/360); x := Round(R*Cos(Angle))+Po.x; y := Round(R*Sin(Angle))+Po.y; End; P[N+1] := P[1]; End; {--------------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt(1); Po.x := GetMaxX Div 2; Po.y := GetMaxY Div 2; Ao := 30; R := GetMaxY/4; MakeNgon(R,5,Po,Ao,P); DrawPoly(6,P); Readln; CloseGraph; END. [/CODE] 280/Ve cung: [CODE] Program Ve_Cung; Uses Graph; Var Gd,Gm : Integer; Radius,i : Integer; Begin Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt(1); For Radius := 1 To 50 Do For i := 1 To 100 Do Begin SetColor(14); Arc(0,GetMaxY,20,70,Radius*10); End; Readln; CloseGraph; End. [/CODE] 281/Ve cung ngu nhin: [CODE] Program Ve_Cung_Ngau_Nhien; Uses Crt,Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {---------------------------------} Function RandColor : Word; Begin

RandColor := Random(MaxColor)+1; End; {---------------------------------} Procedure ArcPlay; Const NumMax = 100; Var MaxRadius,EndAngle : Word; ArcInfo : ArcCoordsType; Num : Byte; Begin MaxRadius := GetMaxY Div 10; Num := 1; Repeat SetColor(RandColor); EndAngle :=Random(360); SetLineStyle(SolidLn,0,NormWidth); Arc(Random(GetMaxX),Random(GetMaxY), Random(EndAngle),EndAngle, Random(MaxRadius)); GetArcCoords(ArcInfo); With ArcInfo Do Begin Line(x,y,Xstart,Ystart); Line(x,y,Xend,Yend); End; If Num > NumMax Then Begin Delay(100); ClearDevice; Num := 1; End Else Inc(Num); Delay(100); Until KeyPressed; End; {---------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); ArcPlay; CloseGraph; END. [/CODE] 282/Vong tron quay: [CODE] Program Vong_Tron_Quay; Uses Crt,Graph; Var Gd,Gm : Integer; CenterX,CenterY,x,y :Word; Begin

Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt(1); CenterX := GetMaxX Div 2; CenterY := GetMaxY Div 2; y := GetMaxY Div 3; Repeat For x := y DownTo 1 Do Begin SetColor(14); Ellipse(CenterX,CenterY,0,360,x,y); SetColor(0); Ellipse(CenterX,CenterY,0,360,x+1,y); End; For x := 1 To y Do Begin SetColor(14); Ellipse(CenterX,CenterY,0,360,x,y); SetColor(0); Ellipse(CenterX,CenterY,0,360,x-1,y); End; Until KeyPressed; CloseGraph; End. [/CODE] 283/Xe ap: [CODE] Program CircleDemo; Uses Crt,Graph; Var Palette : PaletteType; MaxX,MaxY,i,ErrorCode,Gd,Gm:Integer; Size : Word; P : Pointer; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); ErrorCode := GraphResult; If ErrorCode <> GrOk Then Begin Writeln('Loi do hoa: ',GraphErrorMsg(ErrorCode)); Halt; End; MaxX := GetMaxX; MaxY := GetMaxY; {*Ve duong tren man hinh *} Line(MaxX Div 2,0,MaxX Div 2,MaxY); Line(0,MaxY Div 2, MaxX,MaxY Div 2); Line(0,0,MaxX,MaxY); Line(MaxX,0,0,MaxY); {* Ve cac vong tron dong tam*} i := MaxY; While i > 20 Do

Begin Circle(MaxX Div 2, MaxY Div 2,i); i := i-10; End; {*Luu 1 phan cua man hinh *} Size := ImageSize(Round(MaxX * 0.25), Round(MaxY * 0.25), Round(MaxX * 0.75), Round(MaxY * 0.75)); GetMem(P,Size); GetImage(Round(MaxX * 0.25), Round(MaxY * 0.25), Round(MaxX * 0.75), Round(MaxY * 0.75),P^); {*Mot phan man hinh nhap nhay *} For i := 1 To 6 Do Begin PutImage(Round(MaxX * 0.25), Round(MaxY * 0.25), P^,NotPut); GetImage(Round(MaxX * 0.25), Round(MaxY * 0.25), Round(MaxX * 0.75), Round(MaxY * 0.75),P^); End; GetPalette(Palette); {*To cac phan cua hinh anh *} Repeat SetFillStyle(Random(9),Random(Palette.Size)+1); FloodFill(Random(MaxX),Random(MaxY),White); Until KeyPressed; Readln; CloseGraph; End. [/CODE] 284/Ve cn nha: [CODE] Program Ve_Can_NHa; Uses Graph; Var Ao : Real; N,i : Byte; {--------------------------------} Procedure EnterGraph(Path: String); Var Gd,Gm : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,Path); If GraphResult <> GrOk Then Halt(1); End; {--------------------------------} Procedure TurnRight(Var Ao:Real;Angle : Real);

Begin Ao := Ao-Angle; End; {--------------------------------} Procedure Draw(L,Ao : Real); Begin LineTo(GetX+Round(L*Cos(Pi*Ao/180)), GetY -Round(L*Sin(Pi*Ao/180))); End; {--------------------------------} Procedure TurtleHouse(L:Real;Ao:Real); Begin Draw(L,Ao); TurnRight(Ao,-90); Draw(L,Ao); TurnRight(Ao,-30); Draw(L,Ao); TurnRight(Ao,-120); Draw(L,Ao); TurnRight(Ao,-30); Draw(L,Ao); TurnRight(Ao,-90); End; {--------------------------------} BEGIN EnterGraph('C:\BP\BGI'); MoveTo(GetMaxX Div 2,GetMaxY Div 2); Ao := 0; N := 6; For i := 1 To N Do Begin SetColor(14); TurtleHouse(100,Ao); TurnRight(Ao,-(360 Div N)); End; Readln; CloseGraph; END. [/CODE] 285/Hinh thanh: [CODE] Program Hinh_Thanh; Uses Crt,Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {------------------------------------} Function RandColor : Word; Begin RandColor := Random(MaxColor)+1; End; {------------------------------------} {*Ve cac thanh co mau va mau to ngau nhien *} Procedure RandBarPlay; Var MaxWidth,MaxHeight : Integer; ViewInfo : ViewPortType; Color : Word; Begin

GetViewSettings(ViewInfo); With ViewInfo Do Begin MaxWidth := x2-x1; MaxHeight :=y2-y1; End; Repeat Color := RandColor; SetColor(Color); SetFillStyle(Random(CloseDotFill)+1,Color); Bar(Random(MaxWidth),Random(MaxHeight), Random(MaxWidth), Random(MaxHeight)); Until KeyPressed; End; {------------------------------------} BEGIN Gd:=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); RandBarPlay; CloseGraph; END. [/CODE] 286/Hinh ni: [CODE] Program Hinh_Noi; Uses Crt,Graph; Const BrightShade = LightGray; DarkShade = Black; Var MaxX,MaxY : Integer; Wait : Char; N : Byte; {--------------------------------} Procedure Swap(Var x,y:Integer); Var z : Integer; Begin z := x; x := y; y := z; End; {--------------------------------} Function Int2St(N: LongInt): String; Var Temp : String; Begin Str(N,Temp); Int2St := Temp; End; {--------------------------------} Procedure EnterGraph(Path: String);

Var Gd,Gm,Ge : Integer; Begin DetectGraph(Gd,Gm); If Gd <> VGA Then Begin Writeln('Khong nen chay chuong trinh tren man hinh nay'); Readln; Halt(1); End Else Begin InitGraph(Gd,Gm,Path); Ge := GraphResult; If Ge <> GrOk Then Begin Writeln('Loi do hoa: ',GraphErrorMsg(Ge)); Halt(1); End; MaxX := GetMaxX; MaxY := GetMaxY; SetViewPort(0,0,MaxX,MaxY,ClipOn); End; End; {--------------------------------} {*Tao mot bang co khung vien toa do x1,y1,x2,y2 mau Color*} Procedure Board(x1,y1,x2,y2,Color : Integer); Var N,i : Integer; Begin If x2 < x1 Then Swap(x1,x2); If y2 < y1 Then Swap(y1,y2); SetFillStyle(1,Color); Bar(x1,y1,x2,y2); {Ve cac khung nen} N := (x2-x1) Div 200; If N < 2 Then N := 2; SetColor(BrightShade); {Ve cac duong bong mau sang} For i := 1 To N Div 2 Do Begin Line(x1+i,y1+i,x2-i,y2+i); Line(x2-i,y2+i,x2-i,y2-i); End; For i := 1 To N Do Begin Line(x1+(2*N+i-1),y1+(2*N+i-1), x1+(2*N+i-1),y2-(2*N+i-1)); Line(x1+(2*N+i-1),y2+(2*N+i-1), x2+(2*N+i-1),y2-(2*N+i-1)); End; SetColor(DarkShade); {Ve cac duong bong mau toi}

For i := 1 To N Div 2 Do Begin Line(x1+i,y1+i,x2-i,y2-i); Line(x1+i,y2-i,x2-i,y2-i); End; For i := 1 To N Do Begin Line(x1+(2*N+i-1),y1+(2*N+i-1), x2+(2*N+i-1),y1-(2*N+i-1)); Line(x2+(2*N+i-1),y1+(2*N+i-1), x2+(2*N+i-1),y2-(2*N+i-1)); End; End; {--------------------------------} {Ve hop co khung vien tam giac,toa do x1,y1,x2,y2, mau Color} Procedure Box(x1,y1,x2,y2,Color :Integer); Var i,N : Integer; Begin If x2 < x1 Then Swap(x1,x2); If y2 < y1 Then Swap(y1,y2); SetFillStyle(1,Color); Bar(x1,y1,x2,y2); {Ve cac khung nen} N := (x2-x1) Div 200; If N < 6 Then N := 6; SetColor(BrightShade); {Ve cac duong bong mau sang} For i := 1 To N Div 2 Do Begin Line(x1+(i-1),y1+(i-1),x2-(i-1),y2+(i-1)); Line(x2-(i-1),y2+(i-1),x2-(i-1),y2-(i-1)); End; For i := (N Div 2)+1 To N Do Begin Line(x1+(i-1),y1+(i-1),x1+(i-1),y2-(i-1)); Line(x1-(i-1),y2-(i-1),x2-(i-1),y2-(i-1)); End; SetColor(DarkShade); For i := (N Div 2)+1 To N Do Begin Line(x1+(i-1),y1+(i-1),x2-(i-1),y1-(i-1)); Line(x2-(i-1),y1-(i-1),x2-(i-1),y2-(i-1)); End; For i := 1 To N Div 2 Do Begin Line(x1+(i-1),y1+(i-1),x1-(i-1),y2-(i-1)); Line(x1+(i-1),y2-(i-1),x2-(i-1),y2-(i-1)); End; End; {--------------------------------}

{Nut bam chu nhat dang loi co toa do x1,y1,x2,y2 mau Color} Procedure ButtonPlus(x1,y1,x2,y2,Color : Integer); Var i,N :Integer; Begin If x2 < x1 Then Swap(x1,x2); If y2 < y1 Then Swap(y1,y2); SetFillStyle(1,Color); Bar(x1,y1,x2,y2); {Ve cac khung nen} N := (x2-x1) Div 100; If N < 4 Then N := 4; SetColor(Darkshade); {Ve cac duong bong mau toi} For i := 1 To N Do Begin Line(x1+(i-1),y1+(i-1),x1+(i-1),y2-(i-1)); Line(x1+(i-1),y2-(i-1),x2-(i-1),y2-(i-1)); End; SetColor(Brightshade); {Ve cac duong bong mau sang} For i := 1 To N Do Begin Line(x1+(i-1),y1+(i-1),x2-(i-1),y1+(i-1)); Line(x2-(i-1),y1+(i-1),x2-(i-1),y2-(i-1)); End; Line(x1+(N-1),y1+(N-1),x1+(N-1),y2-(N-1)); End; {--------------------------------} {Nut bam chu nhat dang lom co toa do x1,y1,x2,y2 mau Color} Procedure ButtonMinus(x1,y1,x2,y2,Color : Integer); Var i,N :Integer; Begin If x2 < x1 Then Swap(x1,x2); If y2 < y1 Then Swap(y1,y2); SetFillStyle(1,Color); Bar(x1,y1,x2,y2); {Ve cac khung nen} N := (x2-x1) Div 100; If N < 2 Then N := 2; SetColor(BrightShade); {Ve cac duong bong mau sang} For i := 1 To N Do Begin Line(x1+(i-1),y1+(i-1),x1+(i-1),y2-(i-1)); Line(x1+(i-1),y2-(i-1),x2-(i-1),y2-(i-1)); End; SetColor(Darkshade); {Ve cac duong bong mau toi} For i := 1 To N Do Begin Line(x1+(i-1),y1+(i-1),x2-(i-1),y1+(i-1));

Line(x2-(i-1),y1+(i-1),x2-(i-1),y2-(i-1)); End; End; {--------------------------------} Function RandColor : Integer; Begin RandColor := Random(MaxColors)+1; End; {--------------------------------} BEGIN EnterGraph('C:\BP\BGI'); Board(10,10,MaxX-10,MaxY-10,DarkGray); Box(30,30,MaxX-30,MaxY-30,LightBlue); ButtonPlus(50,50,(MaxX Div 2)-5,MaxY Div 5,Green); ButtonMinus((MaxX Div 2)+5,50,MaxX-50,MaxY Div 5,LightGreen); Wait := Readkey; Randomize; Repeat N := Random(4)+1; Case N Of 1 : Board(Random(MaxX),Random(MaxY), Random(MaxX),Random(MaxY),RandColor); 2 : Box(Random(MaxX),Random(MaxY), Random(MaxX),Random(MaxY),RandColor); 3 : ButtonPlus(Random(MaxX),Random(MaxY), Random(MaxX),Random(MaxY),RandColor); 4 : ButtonMinus(Random(MaxX),Random(MaxY), Random(MaxX),Random(MaxY),RandColor); End; Delay(500); Until KeyPressed; CloseGraph; END. [/CODE] 287/Thanh 3 chiu: [CODE] Program Thanh_3_Chieu; Uses Crt,Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {---------------------------} Function Int2Str(L:LongInt):String; Var S : String; Begin Str(L,S); Int2Str := S; End; {---------------------------} Function RandColor : Word; Begin RandColor := Random(MaxColor)+1; End;

{---------------------------} Procedure Bar3DPlay; Const NumBars = 7; {so thanh duoc ve} BarHeight : Array[1..NumBars] Of Byte = (1,3,2,5,4,2,1); YTicks = 5; Var ViewInfo : ViewPortType; H,Depth,Color : Word; Xstep,Ystep : Real; i,j : Integer; Begin H := 3*TextHeight('M'); GetViewSettings(ViewInfo); SetTextJustify(CenterText,TopText); SetTextStyle(TriplexFont,HorizDir,4); OutTextXY(GetMaxX Div 2,6,'Hinh Thanh 3 Chieu'); SetTextStyle(DefaultFont,HorizDir,1); With ViewInfo Do SetViewPort(x1+50,y1+40,x2-50,y2-10,ClipOn); GetViewSettings(ViewInfo); With ViewInfo Do Begin Line(H,H,H,(y2-y1)-H); Line(H,(y2-y1), (x2-x1)-H, (y2-y1)-H); YStep := ((y2-y1)-(2*H))/YTicks; Xstep := ((x2-x1)-(2*H)) / NumBars; J := (y2-y1)-H; SetTextJustify(CenterText,CenterText); {Ve truc x va y} For i := 0 To YTicks Do Begin Line(H Div 2,J,H,J); OutTextXY(0,J,Int2Str(I)); J := Round(J-Ystep); End; Depth :=Trunc(0.25*Xstep); {tinh chieu sau cua thanh} {Ve truc X, thanh va toa do} SetTextJustify(CenterText,CenterText); J := H; For I := 1 To Succ(Numbars) Do Begin SetColor(MaxColor); Line(J,(y2-y1)-H,J,(y2-y1-3)-(H Div 2)); OutTextXY(J,(y2-y1)-(H Div 2),Int2Str(I-1)); If I <> Succ(Numbars) Then Begin Color :=RandColor; SetFillStyle(1,Color); SetColor(Color); Bar3D(J,Round((y2-y1-H)-(BarHeight[i]*Ystep)), Round(j+Xstep-Depth),

Round((y2-y1)-H-1),Depth,TopOn); J := Round(J+Xstep); End; End; End; End; {---------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); Bar3DPlay; Readln; CloseGraph; END. [/CODE] 288/Hinh elip: [CODE] Program Hinh_Ellipse; Uses Crt,Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {--------------------------------} Function RandColor : Word; Begin RandColor := Random(MaxColor)+1; End; {--------------------------------} Procedure FillEllipsePlay; Const MaxFillStyles = 12; {Patterns 0..11} Var MaxRadius : Word; FillColor : Integer; Begin MaxRadius := GetMaxY Div 10; {Dinh duong kinh toi da la 1/10 chieu co man hinh} SetLineStyle(SolidLn,0,NormWidth); Repeat FillColor := RandColor; SetColor(FillColor); SetFillStyle(Random(MaxFillStyles),FillColor); {Chon kieu to va mau ngau nhien} FillEllipse(Random(GetMaxX),Random(GetMaxY), Random(MaxRadius),Random(MaxRadius)); Until KeyPressed; End; {--------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then

Halt(1); FillEllipsePlay; CloseGraph; END. {--------------------------------} [/CODE] 289/Hinh quat elip: [CODE] Program Hinh_Quat_Ellipse; Uses Graph; Const R = 50; Var Gd,Gm : Integer; Xasp,Yasp :Word; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt(1); SetColor(Yellow); Sector(GetMaxX Div 2, GetMaxY Div 2,0,45,R,R); GetAspectRatio(Xasp,Yasp); SetColor(Magenta); Sector(GetMaxX Div 2,GetMaxY Div 2,180,135,R,R*LongInt(Xasp) Div Yasp); Readln; CloseGraph; End. [/CODE] 290/Vt mau: [CODE] Program Vet_mau; Uses Graph; {------------------------------------} Procedure EnterGraph(Path: String); Var Gd,Gm,Ge : Integer; Begin DetectGraph(Gd,Gm); InitGraph(Gd,Gm,Path); Ge := GraphResult; If Ge <> GrOk Then Begin Writeln('Loi : ',GraphErrorMsg(Ge)); Halt(1); End; End; {------------------------------------} Function Int2St(N : Integer): String; Var St : String; Begin Str(N,St);

While Length(St) < 2 Do St := '0'+St; Int2St :=St; End; {------------------------------------} Function Repl(Ch : Char;N : Byte) : String; Var i : Byte; Tempo : String; Begin Tempo := ' '; For i := 1 To N Do Tempo := Tempo + Ch; Repl := Tempo End; {------------------------------------} Procedure DrawLine(x,y : Integer;Ch : Char); Var N,W : Integer; St : String; Begin W := TextWidth(Ch); N := (GetMaxX - X) Div W; St := Repl(Ch,N-2); OutTextXY(x,y,St); End; {------------------------------------} Procedure DemoLine; Var H : Integer; Color : Word; Begin SetTextStyle(DefaultFont,HorizDir,1); SetTextJustify(LeftText,CenterText); H := GetMaxY Div 20; OutTextXY(GetMaxX Div 10,H,'T/Gia'); OutTextXY(GetMaxX Div 5,H,'Bang mau'); H := GetMaxY Div 10; For Color := 0 To GetMaxColor Do Begin SetColor(Color); OutTextXY(GetMaxX Div 10,H,Int2St(Color)); DrawLine(GetMaxX Div 5,H,#220); H := H + 2*TextHeight('T'); End; End; {------------------------------------} BEGIN EnterGraph('C:\BP\BGI'); DemoLine; Readln; CloseGraph; END.

[/CODE] 291/Ch co bong: [CODE] Program Chu_Co_Bong; Uses Graph; Var Gd,Gm : Integer; Y,Size : Integer; CenterX : Word; {------------------------------} Procedure WriteShade(x,y:Word;S:String;Font,Size,Colo1,Colo2: Integer); Var h,k : Byte; Begin SetTextJustify(CenterText,CenterText); SetTextStyle(Font,0,Size); If (Size=0) Then SetUserCharSize(19,11,1,1); H := TextHeight('M') Div 10; If (Size < 4) Then H := 2*H; SetColor(Colo2); For k := H DownTo 1 Do OutTextXY(x + k,y+k,S); SetColor(Colo1); OutTextXY(x,y,S); End; {------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); SetBkColor(GetMaxColor Div 2); CenterX := GetMaxX Div 2; Y := GetMaxY Div 4; WriteShade(CenterX,y,'TURBO PASCAL',DefaultFont,6,4,14); Y := GetMaxY Div 2; WriteShade(CenterX,y,'VerSion 7.0',DefaultFont,3,4,14); Y := 3*(GetMaxY Div 4); WriteShade(CenterX,y,'CHU CO BONG CANH',DefaultFont,4,1,14); Readln; CloseGraph; END. [/CODE] 292/Ch doc co bong: [CODE] Program Chu_Doc_Co_Bong; Uses Graph; Var Gd,Gm : Integer; {----------------------------------} Procedure WriteVertShade(x,y,Colo1,Colo2,Font,Size:Integer;St:String); Var

h,i,j,Xo,Yo : Integer; Begin SetTextStyle(Font,0,Size); If Size = 0 Then SetUserCharSize(19,11,1,1); SetTextJusTify(LeftText,TopText); h :=TextHeight('T') Div 10; If Size < 4 Then h := 2*h; SetColor(Colo2); Xo := x; Yo := y; For j := h DownTo 1 Do For i := 1 To Length(St) Do Begin Yo := y + 3*(i-1)*(TextHeight('T') Div 2); OutTextXY(Xo+j,Yo+j,St[i]); End; SetColor(Colo1); Xo :=x; Yo := y; For i := 1 To length(St) Do Begin OutTextXY(Xo,Yo,St[i]); Yo := Yo+3*(TextHeight('T') Div 2); End; End; {----------------------------------} BEGIN Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); WriteVertShade(0,0,4,14,DefaultFont,5,'Pascal'); Readln; CloseGraph; END. {----------------------------------} [/CODE] 293/MultiFonts: [CODE] Program MultiFonts; Uses Graph; Const Message = 'Borland Pascal 7.0'; Var Gd,Gm,y : Integer; Ch : Char; {---------------------------------} Procedure ShowText(Font : Word); Begin SetTextStyle(Font,HorizDir,4); OutTextXY(0,y,Message); Inc(y,TextHeight('M')+4);

End; {---------------------------------} Procedure LoadOneFont(FileName : String); Var f : File; Fp : Pointer; Bytes : LongInt; Begin Assign(f,Filename); Reset(f,1); Bytes := FileSize(f); Getmem(Fp,Bytes); BlockRead(f,fp^,Bytes); Close(f); If RegisterBgiFont(Fp) < 0 Then Begin Writeln('Khong nap duoc tap tin: ',Filename); Writeln('Loi do hoa: ',GraphErrorMsg(GraphResult)); Halt; End; End; {---------------------------------} Procedure LoadFonts(Path: String); Begin If Length(Path) > 0 Then If Path[Length(Path)] <> '\' Then Path := Path + '\'; LoadOneFont(Path+'BOLD.CHR'); LoadOneFont(Path+'EURO.CHR'); LoadOneFont(Path+'GOTH.CHR'); LoadOneFont(Path+'LCOM.CHR'); LoadOneFont(Path+'LITT.CHR'); LoadOneFont(Path+'SANS.CHR'); LoadOneFont(Path+'SCRI.CHR'); LoadOneFont(Path+'SIMP.CHR'); LoadOneFont(Path+'TRIP.CHR'); LoadOneFont(Path+'TSCR.CHR'); End; {---------------------------------} BEGIN LoadFonts('C:\BP\BGI'); Gd :=Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); Y := TextHeight('M'); SetColor(14); ShowText(DefaultFont); ShowText(TriplexFont); ShowText(SmallFont); ShowText(SansserifFont); ShowText(GothicFont); MoveTo(0,y+16);

For Ch := 'A' To 'z' Do Begin SetTextStyle((Ord(Ch)-65) Mod 5, HorizDir,2); OutText(Ch); End; Readln; CloseGraph; END. [/CODE] 294/L u hinh: [CODE] Program Luu_hinh; Uses Graph; Var Gd,Gm : Integer; P : Pointer; Size, i : Word; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> 0 Then Halt(1); SetColor(Blue); SetFillStyle(XhatchFill,Red); Bar(50,50,150,150); Size :=ImageSize(50,50,150,150); GetMem(P,Size); GetImage(50,50,150,150,P^); Readln; ClearDevice; For i := 0 To 4 Do Begin PutImage(100+50*i,100+25*i,P^,i); Readln; End; FreeMem(P,Size); Readln; CloseGraph; End. [/CODE] 295/ia bay: [CODE] Program Dia_Bay; Uses Crt,Graph; Const MaxColor = 15; Var Gd,Gm : Integer; {-------------------------------} Function RandColor : Word; Begin RandColor := Random(MaxColor)+1; End; {-------------------------------} Procedure PutImagePlay;

Const r = 20; StartX = 100; StartY = 50; Var CurPort : ViewPortType; {----------------------------} Procedure MoveSaucer(Var x,y :Integer;Width,Height : Integer); Var Step : Integer; Begin Step := Random(2*r); If Odd(Step) Then Step := -Step; x := x+Step; Step := Random(r); If Odd(Step) Then Step := -Step; y := y + Step; With CurPort Do Begin If (x1 + X + Width - 1 > x2) Then X := x2 - x - Width + 1 Else If (X < 0) Then X := 0; If (y1 + Y + Height -1 > y2) Then Y := y2 - y1 - Height + 1 Else If (Y < 0) Then Y := 0; End; End; {-------------------------------} Var PauseTime,UlX,UlY,LrX,LrY,Size,i : Word; Saucer : Pointer; X,Y : Integer; Begin ClearDevice; GetViewSettings(CurPort); Ellipse(StartX,StartY,0,360,r,(r Div 3)+2); Ellipse(StartX,StartY-4,190,357,r,r Div 3); Line(StartX+7,StartY-6,StartX+10,StartY-12); Circle(StartX+10,StartY-12,2); Line(StartX+7,StartY-6,StartX+10,StartY-12); Circle(StartX-10,StartY-12,2); SetFillStyle(SolidFill,MaxColor); FloodFill(StartX+1,StartY+4,GetColor); UlX := StartX-(r+1); UlY := StartY-14; LrX := StartX+(r+1); LrY := StartY+(r Div 3)+3;

Size := ImageSize(UlX,UlY,LrX,LrY); GetMem(Saucer,Size); GetImage(UlX,UlY,LrX,LrY,Saucer^); PutImage(UlX,UlY,Saucer^,XORput); For i := 1 To 1000 Do PutPixel(Random(GetMaxX),Random(GetMaxY),RandColor); X := GetMaxX Div 2; Y := GetMaxY Div 2; PauseTime := 200; Repeat PutImage(X,Y,Saucer^,XORPut); Delay(pauseTime); PutImage(X,Y,Saucer^,XORPut); MoveSaucer(X,Y,LrX-UlX+1,Lry-Uly+1); Until KeyPressed; FreeMem(Saucer,Size); End; {-------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); PutImagePlay; Readln; CloseGraph; END. [/CODE] 296/Vong tron di ng: [CODE] Program Vong_Tron_Di_Dong; Uses Crt,Graph; Const r : Word = 100; Var Gd,GmLo,GmHi : Integer; XMax,Xmin : Integer; CenterY,x : Integer; Page1,Page2 : Word; Right : Boolean; {---------------------------------} Procedure CircleDraw(x : Integer); Begin ClearDevice; SetLineStyle(Solidln,0,NormWidth); SetColor(Yellow); Circle(x,CenterY,r); End; {---------------------------------} Procedure Init; Begin DetectGraph(Gd,GmLo); If Not (Gd in[EGA,VGA,HercMono]) Then Begin Writeln('Khong lat trang man hinh duoc');

Halt(1); End; GetModeRange(Gd,GMLo,GmHi); InitGraph(Gd,GmLo,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); SetBkColor(LightBlue); End; {---------------------------------} BEGIN Init; CenterY := GetMaxY Div 2; XMin :=R; XMax := GetMaxX - R; X := XMin; Page1 := 0; Page2 := 1; Right := True; Repeat SetVisualPage(Page1); SetActivePage(Page2); CircleDraw(x); If Right Then If X < Xmax Then X := X+10 Else Begin X := X-10; Right := False; End Else If X > XMin Then X := X-10 Else Begin X := X + 10; Right := True; End; Page1 := 1-Page1; Page2 := 1-Page2; Until KeyPressed; CloseGraph; END. [/CODE] 297/Lt trang: [CODE] Program Lat_Trang; Uses Crt,Graph; Const R : Word = 100; Type ProcType = Procedure; Var Gd,Gm : Integer; Page1,Page2 : Word;

Page : Array[0..4] Of ProcType; i : Byte; {$F+} {-------------------------------} Procedure PageN0; Begin ClearDevice; SetColor(Red); RecTangle(150,50,450,150); SetColor(Yellow); SetTextStyle(TriplexFont,HorizDir,6); SetTextJustify(CenterText,CenterText); OutTextXY(GetMaxX Div 2,GetMaxY Div 2,'Trang 1'); End; {-------------------------------} Procedure PageN1; Begin ClearDevice; SetColor(Blue); SetTextStyle(TriplexFont,VertDir,6); SetTextJustify(CenterText,CenterText); OutTextXY(GetMaxX Div 2,GetMaxY Div 2,'Trang 2'); End; {-------------------------------} Procedure PageN2; Begin ClearDevice; SetColor(Blue); SetFillStyle(SolidFill,Random(GetMaxColor)+1); PieSlice(GetMaxX Div 2, GetMaxY Div 2,0,360,100); SetColor(Cyan); SetTextStyle(DefaultFont,HorizDir,6); SetTextJustify(CenterText,CenterText); OutTextXY(GetMaxX Div 2,GetMaxY Div 2,'Trang 3'); End; {-------------------------------} Procedure PageN3; Var Color : Integer; x,y : Integer; Radius : Word; Begin ClearDevice; X := GetMaxX Div 2; Y := 3*(GetMaxY Div 4); Radius := GetMaxY Div 2; For Color := 0 To GetMaxColor Do Begin SetLineStyle(Solidln,0,ThickWidth); SetColor(Color); Arc(X,Y,0,180,Radius); X := X + 10; Radius := Radius + 10;

SetColor(Magenta); SetTextStyle(SansSerifFont,VertDir,6); SetTextJustify(CenterText,CenterText); OutTextXY(GetMaxX Div 2,GetMaxY Div 2,'Trang 4'); End; End; {-------------------------------} {$F-} {-------------------------------} Procedure Init; Var Gd,Gm,GmHi : Integer; Begin DetectGraph(Gd,Gm); If Not (Gd in [EGA,VGA,HercMono]) Then Begin Writeln('Khong lat trang duoc'); Halt(1); End; GetModeRange(Gd,Gm,GmHi); InitGraph(Gd,Gm,'C:\BP\BGI'); SetBkColor(Black); End; {-------------------------------} BEGIN Init; Page[0]:=PageN0; Page[1]:=PageN1; Page[2]:=PageN2; Page[3]:=PageN3; i := 0; Page1 := 0; Page2 := 1; Page[3]; Repeat SetVisualPage(Page1); SetActivePage(Page2); i := i Mod 4; Page[i]; i := i + 1; Page1 := 1-Page1; Page2 := 1-Page2; Delay(1000); Until keyPressed; CloseGraph; END. [/CODE] 298/Ch doc: [CODE] Program Chuoi_Doc; Uses Graph; Var Gd,Gm : Integer; {-------------------------------}

Procedure WriteVert(x,y,Colo,Font,Size:Integer;St: String); Var i : Byte; Begin SetTextStyle(Font,0,Size); If Size = 0 Then SetUserCharSize(2,1,1,1); SetTextJustify(LeftText,TopText); SetColor(Colo); For i := 1 To Length(St) Do Begin OutTextXY(x,y,St[i]); y := y+3*(TextHeight('T') Div 2); End; End; {-------------------------------} BEGIN Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); If GraphResult <> GrOk Then Halt(1); WriteVert(0,0,14,GothicFont,3,'Turbo Pascal'); Readln; CloseGraph; END. [/CODE] 299/Textdemo: [CODE] Program TextDemo; Uses Crt,Graph; Const CharType : Array[0..4] Of String = ('Default','Triplex','Small','Sans-Serif','Gothic'); Var S : String; MaxX,MaxY,i,j,k,Gd,Gm,Ge : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,'C:\BP\BGI'); Ge := GraphResult; If Ge <> GrOk Then Begin Writeln('Loi: ',GraphErrorMsg(Ge)); Halt; End; MaxX := GetMaxX; MaxY := GetMaxY; For i := 0 To 4 Do Begin k := 0; For j := 1 To 10 Do Begin SetTextStyle(i,HorizDir,j); OutTextXY(j*20,k,CharType[i]);

k := k + TextHeight(CharType[i]) + 10; End; SetTextStyle(0,HorizDir,2); S :='Bam phim ENTER... '; OutTextXY(MaxX - TextWidth(S),MaxY - TextHeight(S),S); Readln; ClearDevice; End; CloseGraph; End. [/CODE] 300/Kiu ch : [CODE] Program Kieu_Chu; Uses Graph; Var MaxX,MaxY : Integer; {--------------------------------} Procedure EnterGraph(Path:String); Var Gd,Gm,Ge : Integer; Begin Gd := Detect; InitGraph(Gd,Gm,Path); Ge := GraphResult; If Ge <> 0 Then Begin Writeln('Loi: ',GraphErrorMsg(Ge)); Halt(1); End; End; {--------------------------------} BEGIN EnterGraph('C:\BP\BGI'); MaxX :=GetMaxX; MaxY := GetMaxY; SetColor(GetMaxColor); SetTextStyle(TriplexFont,HorizDir,4); SetTextJustify(CenterText,CenterText); OutTextXY(MaxX Div 2, MaxY Div 4,'Norm'); SetTextStyle(TriplexFont,HorizDir,0); SetUserCharSize(1,3,1,2); OutTextXY(MaxX Div 2, MaxY Div 2,'Short'); SetUserCharSize(3,1,1,1); OutTextXY(MaxX Div 2, (MaxY Div 4)*3,'Wide'); Readln; CloseGraph; END. [/CODE]

Potrebbero piacerti anche