You are on page 1of 117

KIỂU BẢN GHI (RECORD)

I. KHAI BÁO DŨ LIỆU KIỂU RECORD


TYPE TênKiểu = RECORD
Field1 : Kiểu1;
Field2 : Kiểu2;
...
FieldN: KiểuN;
END;
VAR Biến : TênKiểu;
Ví dụ:
TYPE HocSinh = Record
Hoten : String[20];
Tuoi : Integer;
DiemTB : real;
End;
VAR HS : HocSinh;

II. XUẤT NHẬP DỮ LIỆU KIỂU RECORD


Không thể dùng các thủ tục xuất/nhập, các phép toán so sánh đối với các biến kiểu record
mà chỉ có thể sử dụng thông qua từng truờng của biến record đó.

2.1. Truy nhập trực tiếp: TênbiếnRecord.Field

2.2. Sử dụng câu lệnh WITH


WITH TênbiếnRecord DO
BEGIN
Xử lý Field1;
Xử lý Field2;
...
Xử lý FieldN;
END;

2.3. Gán biến Record: Ta có thể gán 2 biến Record cùng kiểu với nhau.

BÀI TẬP MẪU

Bài tập 7.1: Viết chương trình thực hiện phép cộng 2 số phức.

Uses Crt;
Type Complex = Record
a,b:Real;
End;
Var c1,c2,c3:Complex;
dau:string;
Begin
Writeln(‘Nhap so phuc c1:’);
Write(‘Phan thuc a = ‘); Readln(c1.a);
Write(‘Phan ao b = ‘); Readln(c1.b);

Writeln(‘Nhap so phuc c2:’);


Write(‘Phan thuc a = ‘); Readln(c2.a);
Write(‘Phan ao b = ‘); Readln(c2.b);

{Tính tổng 2 số phức}


c3.a := c1.a + c2.a;
c3.b := c1.b + c2.b;

{In kết quả ra màn hình}


Writeln(‘Tong cua 2 so phuc:’);
If c1.b>=0 Then dau:=’+i’ else dau:=’-i’;
Writeln(‘c1 = ‘, c1.a:0:2, dau, abs(c1.b):0:2); {Số phức c1}
If c2.b>=0 Then dau:=’+i’ else dau:=’-i’;
Writeln(‘c2 = ‘, c2.a:0:2, dau, abs(c2.b):0:2); {Số phức c2}
Writeln(‘La so phuc:’);
If c3.b>=0 Then dau:=’+i’ else dau:=’-i’;
Writeln(‘c3 = ‘, c3.a:0:2, dau, abs(c3.b):0:2); {Số phức c3}
Readln;
End.

Bài tập 7.2: Viết chương trình quản lý điểm thi Tốt nghiệp của sinh viên với 2 môn thi: Cơ sở
và chuyên ngành. Nội dung công việc quản lý bao gồm:
 Nhập điểm cho từng sinh viên.
 In danh sách sinh viên ra màn hình.
 Thống kê số lượng sinh viên thi đậu.
 In ra màn hình hình danh sách những sinh viên bị thi lại.

Uses Crt;
Const Max=200;
Type SinhVien=Record
Hoten:string[30];
DiemCS,DiemCN:Byte;
End;

Var SV:ARRAY[1..Max] Of SinhVien;


n:Byte;
c:Char;

Procedure NhapDanhSach;
Var ch:Char;
Begin
Clrscr;
Writeln('NHAP DANH SACH SINH VIEN');
n:=0;
Repeat
n:=n+1;
With SV[n] Do
Begin
Write('Ho ten: '); Readln(Hoten);
Write('Diem co so: '); Readln(DiemCS);
Write('Diem chuyen nganh: '); Readln(DiemCN);
End;
Writeln('Nhan phim bat ky de nhap tiep/Nhan <ESC> de ket thuc!');
ch:=Readkey;
Until ch=#27;
End;

Procedure InDanhSach;
Var ch:Char;
i:Byte;
Begin
Clrscr;
Writeln('DIEM THI TOT NGHIEP SINH VIEN');
Writeln;
WRITELN('STT Ho ten Diem Co so Diem Chuyen nganh');
For i:=1 To n do
With SV[i] Do
Begin
Writeln(i:3,'.',Hoten:20,DiemCS:5,DiemCN:20);
End;
ch:=ReadKey;
End;

Procedure DanhSachSVThilai;
Var ch:Char;
i:Byte;
Begin
Clrscr;
Writeln('DANH SACH SINH VIEN THI LAI');
Writeln;
WRITELN('STT Ho ten Diem Co so Diem Chuyen nganh');
For i:=1 To n do
With SV[i] Do
Begin
If (DiemCS<5)OR(DiemCN<5) Then
Writeln(i:3,'.',Hoten:20,DiemCS:5,DiemCN:20);
End;
ch:=ReadKey;
End;

Procedure ThongKeSVThiDau;
Var S,i:Byte;
ch:Char;
Begin
S:=0;
For i:=1 To n Do
If (SV[i].DiemCS>=5)AND(SV[i].DiemCN>=5) Then S:=S+1;
Writeln('So sinh vien thi dau la: ',s);
ch:=Readkey;
End;

Begin
Repeat
Clrscr;
Writeln('CHUONG TRINH QUAN LY DIEM THI TOT NGHIEP SINH VIEN');
Writeln('1. Nhap danh sach sinh vien');
Writeln('2. In danh sach sinh vien');
Writeln('3. Thong ke so sinh vien thi dau');
Writeln('4. danh sach sinh vien thi lai');
Writeln('<ESC>: Thoat');
c:=Readkey;
Case c Of
'1': NhapDanhSach;
'2': InDanhSach;
'3': ThongKeSVThiDau;
'4': DanhSachSVThilai;
End;
Until c=#27;
End.

Bài tập 7.3: Viết chương trình nhập vào n đỉnh của một đa giác lồi S.
a/ Tính diện tích của S biết:

dt(S)=

trong đó: (xi,yi) là tọa độ đỉnh thứ i của đa giác S.


b/ Nhập vào thêm một điểm P(x,y). Hãy kiểm tra xem P nằm trong hay ngoài đa giác S.
Ý tưởng:
Nối P với các đỉnh của đa giác S thì ta được n tam giác: Si= PPiPi+1, với Pn+1=P1.

Nếu = dt(S) thì P  S.

Uses Crt;
Type Toado=Record
x,y:integer;
end;
Mang=array[0..30] of Toado;

Var n:Byte;
A:Mang;
P:ToaDo;

Procedure NhapDinh(var n:Byte; Var P:Mang);


Var i:Byte;
Begin
Write('Nhap so dinh cua da giac n = '); readln(n);
For i:=1 to n do
Begin
Write('P[',i,'].x = ');readln(P[i].x);
Write('P[',i,'].y = ');readln(P[i].y);
End;
End;

Function DienTichDaGiac(n:Byte;P:Mang):real;
Var i,j:integer;
s:real;
Begin
s:=0;
for i:= 1 to n do
begin
if i=n then j:=1 else j:=i+1;
s:=s+((P[i].x*P[j].y-P[j].x*P[i].y));
end;
DienTichDaGiac:=abs(s)/2;
end;

Function DienTichTamGiac(A,B,C:ToaDo):real;
Begin
DienTichTamGiac:=abs(A.x*B.y-B.x*A.y+B.x*C.y-C.x*B.y+C.x*A.y-A.x*C.y)/2;
End;

Function KiemTra(PP:ToaDo;n:Byte;P:Mang):Boolean;
Var i,j:integer;
s:real;
begin
s:=0;
For i:=1 to n do
begin
if i=n then j:=1 else j:=i+1;
s:=s+DienTichTamGiac(PP,P[i],P[j]);
end;
If round(s)=round(DienTichDaGiac(n,P)) then KiemTra:=true
else KiemTra:=false;
end;

Begin
NhapDinh(n,A);
Writeln('S=',DienTichDaGiac(n,A):0:2);
Readln;
Writeln('Nhap diem P:');
Write('P.x = ');readln(P.x);
Write('P.y = ');readln(P.y);
If KiemTra(P,n,A) Then Writeln('Diem P nam trong da giac S.')
Else Writeln('Diem P nam ngoai da giac S.');
Readln;
End.

BÀI TẬP TỰ GIẢI


Bài tập 7.4: Viết chương trình nhân hai số phức c1, c2.

Bài tập 7.5: Viết chương trình quản lý điểm thi học phần của sinh viên bao gồm các trường sau: Họ
tên, Điểm Tin, Điểm ngoại ngữ, Điểm trung bình, Xếp loại. Thực hiện các công việc sau:
a/ Nhập vào danh sách sinh viên của một lớp (không quá 30 người), bao gồm: Họ tên, Điểm
Tin, Điểm Ngoại ngữ. Tính Điểm trung bình và Xếp loại cho từng sinh viên.
b/ In ra màn hình danh sách sinh viên của lớp đó theo dạng sau:

Họ tên Điểm Tin Điểm Ngoại ngữ Điểm T.Bình Xếp loại
Trần Văn An 8 9 8.5 Giỏi
Lê Thị Béo 7 5 6.0 T.Bình
............................ ............ ..................... ............ ..............

c/ In ra màn hình danh sách những sinh viên phải thi lại (nợ một trong hai môn).
d/ In ra danh sách những sinh viên xếp loại Giỏi.
e/ Tìm và in ra màn hình những sinh viên có điểm trung bình cao nhất lớp.
f/ Sắp xếp lại danh sách sinh viên theo thứ tự Alphabet.
g/ Sắp xếp lại danh sách sinh viên theo thứ tự giảm dần của điểm trung bình.
h/ Viết chức năng tra cứu theo tên không đầy đủ của sinh viên. Ví dụ: Khi nhập vào tên
Phuong thì chương trình sẽ tìm và in ra màn hình thông tin đầy đủ của những sinh viên có tên Phuong
(chẳng hạn như: Pham Anh Phuong, Do Ngoc Phuong, Nguyen Nam Phuong...).

Bài tập 7.6: Viết chương trình quản lý sách ở thư viện gồm các trường sau: Mã số sách, Nhan đề, Tên
Tác giả, Nhà Xuất bản, Năm xuất bản.
a/ Nhập vào kho sách của thư viện (gồm tất cả các trường).
b/ In ra màn hình tất cả các cuốn sách có trong thư viện.
c/ Tìm một cuốn sách có mã số được nhập vào từ bàn phím. Nếu tìm thấy thì in ra màn hình
thông tin đầy đủ của cuốn sách đó, ngược lại thì thông báo không tìm thấy.
c/ Tìm và in ra màn hình tất cả các cuốn sách có cùng tác giả được nhập vào từ bàn phím.
d/ Lọc ra các cuốn sách được xuất bản trong cùng một năm nào đó.
e/ Tìm và in ra màn hình các cuốn sách mà nhan đề có chứa từ bất kỳ được nhập vào từ bàn
phím.
Thư Viện Các Dạng Bài Tập Pascal của Tin Học 11 - Phần 1

1/Sắp Xếp Theo Tên:


Program Sap_Xep_Theo_Ten;
TYPE
ConTro = ^HoSo;
HoSo = RECORD
HoLot : String[17];
Ten : String[7];
Diem : Real;
End;
VAR
a : Array[1..50] Of HoSo;
Tam : ConTro;
i,j,PhanTu : Integer;
BEGIN
PhanTu := 0;
New(Tam);
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.

2/Sắp xếp điểm tăng:


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/Hóa Đơn:
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ư viện sách:


Program Thu_Vien;
Uses Crt;
TYPE
ConTro = ^ThuVien;
ThuVien = RECORD
TenSach : String[30];
TacGia : String[24];
Namxb : Byte;
NguoiMuon: String[24];
Next : ConTro;
End;
VAR
First,Last,Newp : ConTro;
ds,dm : Integer;
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ơ Nhân Viên:


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/Tính điểm xếp hạng:


Program Tinh_Diem_Xep_Hang;
TYPE
ConTro = ^Lop;
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 : 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/Hoán vị chuỗi:
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/Tách danh sách chẳn lẻ:


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 ngược danh sách:


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/Ghép Chuỗi:
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/Cây nhị phân (hay):


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;
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('-----------------');
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 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;
'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: ');
Readln(HoTen);
If HoTen <> '' Then
Xoa(Goc,NV)
Else
KetThuc := True;
End;
Until KetThuc;
End;
'4' : Begin
ClrScr;
Writeln('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
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;
'6' : Begin
Writeln('7- KET
THUC CHUONG TRINH');
Writeln;

End;
End;
Until Ch = '6'
END.

12/Đổi thập phân ra nhị phân:


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/Mảng kí tự:
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 bình cộng:


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/Chèn một số vào hàng:


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/Xóa phần tử trong mảng:


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/Thống kê các số lẻ:


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/Tính giá trị của đa thức bậc N:


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ố nguyên kiểu Word ra hệ thập lục:


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ố nguyên kiểu Word ra hệ nhị phân:


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/Cộng 2 số nguyên:
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/Nhân 2 số nguyên:
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 trận vuông 10x10 phần tử:


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/Tìm một số trong mảng:


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/Giải hệ phuơng trình tuyến tính 2 ẩn:


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/Nhân ma trận:
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/Tìm và xóa các kí tự trùng nhau trong chuổi:


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/Tìm chuổi 2 xuất hiện trong chuổi 1:


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);
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
End.

29/Đổi số La mã ra số thập phân:


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+40;
i:=i-2;
End
Else
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/Kiểm tra số nhập vào:


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.

31/Chuơng trình mã hóa:


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/Ngắt từng từ trong câu:


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/Kiểm tra kí tự trùng của 2 chuổi:


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/Kiểm tra chuổi đối xứng:


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ố thập phân ra số la mã:


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/Mãng số thực:
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/Tổng tích ma trận:


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.

38/Sắp xếp mảng tăng dần:


Program Mang_tang;
Const
Max=10;
Var
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/Sắp xếp mảng bảng giải thuật chèn:


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/Sắp xếp mảng bảng giải thuật chọn:


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/Sắp xếp mảng bằng giải thuật nổi bọt:


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/Giải thuật tìm kiếm tuyến tính:


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/Giải thuật tìm kiếm nhị phân:


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/Xóa bỏ các số trùng nhau:


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/Dãy con:
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:
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 giác Pascal:


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/Phân tích số nguyên duơng nhỏ nhất:


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/Bảng cửu chuơng:


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/Tìm 2 phần tử liên tiếp trong bảng X:


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.
Thư Viện Các Dạng Bài Tập Pascal của Tin Học 11 - Phần 2

101/Nhập số liệu cho 1 tập tin số nguyên:


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/Ghép tập tin:


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 điện thoại:
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: ');
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
End.

104/Che dấu tập tin:


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/Cập nhật dữ liệu:


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 tập tin:


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 chậm tập tin theo từng chử:


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 tập tin:


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/Tạo tập tin âm thanh Lambada:


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:
Program Karaoke;
Uses Crt;
Const
Lento = 10;
Type
ConTro = ^Nhac;
Nhac = RECORD
Note,Dura : Word;
Next : ConTro;
End;
Var
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 điểm vào tập tin:


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 thêm điểm vào tập tin:


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/Tìm điểm theo họ tên:


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ơ:
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: ');
Readln(Chucvu);
Write('-Bac luong: ');
Readln(BacLuong);
Write(f,Nv);
End;
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/Trộn tập tin:


Program Tron_Tap_tin;
Uses Crt;
Var
f1,f2,f3 : File Of Integer;
So1,So2 : Integer;
i : Integer;
Ch : Char;
ok1,ok2 : Boolean;
{--------------------------------}
Function Layso1(Var So1 : Integer): Boolean;
Begin
If Not EOF(f1) Then
Begin
Read(f1,So1);
LaySo1 := True;
End
Else
layso1 := False;
End;
{--------------------------------}
Function Layso2(Var So2 : Integer): Boolean;
Begin
If Not EOF(f2) Then
Begin
Read(f2,So2);
LaySo2 := True;
End
Else
layso2 := False;
End;
{--------------------------------}
BEGIN
Assign(f1,'so1.dat');
Rewrite(f1);
ClrScr;
Writeln('NHAP TAP TIN SO1');
Writeln('----------------');
Writeln;
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So1);
Write(f1,so1);
Write('-Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) = 'K';
Close(f1);
Assign(f2,'so2.dat');
Rewrite(f2);
ClrScr;
Writeln('NHAP TAP TIN SO2');
Writeln('----------------');
Writeln;
i := 0;
Repeat
i := i + 1;
Write('-So thu: ',i:2,' = ');
Readln(So2);
Write(f2,so2);
Write('-Nhap nua ? (c/k) ');
Readln(Ch);
Until Upcase(Ch) = 'K';
Close(f2);
Assign(f3,'so3.dat');
Rewrite(f3);
Reset(f1);
Reset(f2);
ok1 := Layso1(So1);
ok2 := Layso2(so2);
While ok1 Or ok2 Do
Begin
If ok1 And ok2 Then {co ca 2 tap tin}
Begin
If So1 < So2 Then
Begin
Write(f3,so1);
ok1 := layso1(so1);
End
Else
Begin
Write(f3,so2);
ok2 := Layso2(so2);
End;
End
Else
If ok1 Then {chi con tap tin so1.dat}
Begin
Write(f3,so1);
ok1 := layso1(so1);
End
Else
If ok2 Then {chi con tap tin so2.dat}
Begin
Write(f3,so2);
ok2 := Layso2(so2);
End;
End;
Writeln;
Reset(f3);
While not EOF(f3) Do
Begin
Read(f3,i);
Write(i:6);
End;
Close(f1);
Close(f2);
Close(f3);
Writeln;
Write('Da tron xong, bam <Enter>... ');
Readln
END.

116/Đội tuyển:
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 ','|',' HANG ','|');
Stt := 1;
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/Tạo tập tin có kiểu:


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/Tạo danh sách:


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ự đoán bóng đá:


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
Begin
Repeat
Write('=Diem huan luyen vien: ');
Readln(hlv);
Until hlv <=30;
Repeat
Write('=Diem thu mon: ');
Readln(tm);
Until tm <= 15;
Repeat
Write('=Diem hau ve: ');
Readln(hv);
Until hv <= 30;
Repeat
Write('=Diem cac cau thu khac: ');
Readln(ct);
Until ct <= 50;
Repeat
Write('=Diem thuan loi san bai: ');
Readln(sb);
Until sb <= 20;
Diem := hlv + hv + tm + ct + sb;
i := i + 1;
End;
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/Cắt tập tin:


Program Cat_Tap_tin;
Var
f,g1,g2 : File;
Buf : Array[1..63000] Of Byte;
Trungdiem : LongInt;
{-------------------------------------}
Procedure BaoLoi;
Begin
Writeln('Khong mo duoc tap tin');
Halt;
End;
{-------------------------------------}
Procedure MoTapTin;
Var
TenTT,TenTT1,TenTT2: String;
Begin
Write('-Ten tap tin nguon: ');
Readln(TenTT);
Write('-Ten tap tin dich 1: ');
Readln(TenTT1);
Write('-Ten tap tin dich 2: ');
Readln(TenTT2);
Assign(f,TenTT);
Reset(f,1);
Assign(g1,TenTT1);
Rewrite(g1,1);
Assign(g2,TenTT2);
Rewrite(g2,1);
If IOResult <> 0 Then
BaoLoi;
End;
{-------------------------------------}
Procedure TinhTrungDiem;
Begin
TrungDiem := (Filesize(f) Div 2);
End;
{-------------------------------------}
Procedure ChepNuaDau;
Var
S : LongInt;
Num,SoDoc,SoGhi : Word;
Begin
S :=TrungDiem;
Repeat
If Sizeof(Buf) <= S Then
Num := Sizeof(Buf)
Else
Num := S;
BlockRead(f,Buf, Num,SoDoc);
If IOResult <> 0 Then
BaoLoi;
BlockWrite(g1,Buf,SoDoc,SoGhi);
If IOResult <> 0 Then
BaoLoi;
Dec(S,Num);
Until S = 0;
Close(g1);
End;
{-------------------------------------}
Procedure ChepNuaSau;
Var
SoDoc,SoGhi : Word;
Begin
Seek(f,TrungDiem);
If IOResult <> 0 Then
BaoLoi;
Repeat
BlockRead(f,Buf, Sizeof(Buf),SoDoc);
If IOResult <> 0 Then
BaoLoi;
BlockWrite(g2,Buf,SoDoc,SoGhi);
If IOResult <> 0 Then
BaoLoi;
Until (SoDoc = 0) Or (SoGhi <> SoDoc);
Close(g2);
Close(f);
End;
{-------------------------------------}
BEGIN
MoTapTin;
TinhTrungDiem;
ChepNuaDau;
ChepNuaSau;
Writeln;
Write('Da thuc hien xong, bam <Enter>... ');
Readln;
END.

121/Tạo menu:
Program Menu;
Uses Crt;
Type
St17 = String[17];
St7 = String[7];
HoSo = RECORD
Holot : St17;
Ten : St7;
ns : Integer;
Diem : Real
End;
Mang = Array[1..100] Of HoSo;
fhs = File Of HoSo;
Var
Filename : String[11];
f : fhs;
Tam : HoSo;
Ch : Char;
{----------------------------------}
Procedure Nhap(Var f : fhs);
Begin
Rewrite(f);
With Tam Do
Repeat
Write('-Ho lot (0 de ket thuc): ');
Readln(Holot);
If Holot <> '0' Then
Begin
Write('-Ten: ');
Readln(Ten);
Write('-Nam sinh: ');
Readln(Ns);
Write('-Diem: ');
Readln(Diem);
Write(f,tam);
End;
Until HoLot = '0';
Close(f);
End;
{----------------------------------}
Procedure SapXep(Var f : Fhs);
Var
i,j,Spt : Integer;
ds : Mang;
Begin
Reset(f);
Spt := 0;
While Not EOF(f) Do
Begin
Spt := Spt + 1;
Read(f,ds[spt]);
End;
For i := 1 To spt - 1 Do
For j := spt Downto i + 1 Do
If ds[j].Ten[1] < ds[j-1].Ten Then
Begin
Tam := ds[j];
ds[j] := ds[j-1];
ds[j-1] := Tam;
End;
Rewrite(f);
For i := 1 To spt Do
Write(f,ds[i]);
Close(f);
Writeln;
Write('Da sap xep xong, bam <Enter>... ');
Readln;
End;
{----------------------------------}
Procedure Xem(Var f : Fhs);
Begin
ClrScr;
Writeln(' HO VA TEN DIEM');
Reset(f);
While Not EOF(f) Do
Begin
Read(f,Tam);
With Tam Do
Writeln(Holot:17,' ',Ten:7,' ',Diem:6:1);
End;
Readln;
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
Writeln(Holot,' ',Ten,' Diem: ',Diem:0:1);
Repeat
Writeln('Co xoa khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
If Upcase(Ch) = 'C' Then
Begin
spt := spt - 1;
For i := vitri To spt Do
ds[i] := ds[i+1];
End;
End
Else
Writeln('Khong tim thay');
Repeat
Writeln('Tim nua khong ? (c/k) ');
Ch := Readkey;
Until Ch in['c','C','k','K'];
Until Upcase(Ch) = 'K';
Rewrite(f);
For i := 1 To spt Do
Write(f,ds[i]);
Close(f);
End;
{-----Chuong trinh chiinh cua cap nhat-------}
Begin
Repeat
Repeat
ClrScr;
Writeln(' MENU CAP NHAT ');
Writeln('1-Sua');
Writeln('2-Them');
Writeln('3-Xoa');
Writeln('4-Thoat');
Ch := Readkey;
Until Ch in['1'..'4'];
Case Ch Of
'1' : Sua(f);
'2' : Them(f);
'3' : Xoa(f);
End;
Until Ch = '4'
End;
{************ CHUONG TRINH CHINH ***********}
BEGIN
ClrScr;
Write('-Ten tap tin : ');
Readln(Filename);
Assign(f,Filename);
Repeat
Repeat
ClrScr;
Writeln(' MENU CHINH');
Writeln(' 1-Nhap');
Writeln(' 2-Sap xep');
Writeln(' 3-Xem');
Writeln(' 4-Cap nhat');
Writeln(' 5-Ket thuc');
Writeln;
Ch := Readkey;
Until ch in['1'..'5'];
Case Ch Of
'1' : Nhap(f);
'2' : SapXep(f);
'3' : Xem(f);
'4' : CapNhat(f);
End;
Until Ch = '5'
END.

122/Độ dài của dòng:


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/Điểm Sản phẩm:


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;
TongC2 := TongC2 + d2;
SoC := SoC + 1;
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
End.

124/Đếm chử:
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/Tạo tập tin văn bản:


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/Xóa dòng tập tin văn bản:


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/Xóa chú thích:


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/Tìm chuỗi kí tự:


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í dòng:
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/Chạy chử:
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 thẳng:
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/Chùm đường thẳng đồng quy:


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 giác:
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/Vòng Olympic:
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/Hình quạt:
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/Biểu đồ cột:
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/Biểu đồ PIE:
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ị:
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á chép miệng:


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:
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 cạnh của tam giác:


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/Bài toán cổ điển:


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/Các hàm lượng giác:


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/Bài toán gà, chó:


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/Các nguyên âm, phụ âm trong 1 chuỗi:


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/Các phép toán trong tập hợp:


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/Các phép toán:


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/Các số nguyên tố:


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 biết ngày hôm nay sẽ tính được ngày mai:


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/Chọn loại giải trí thích hợp:


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.
Thư Viện Các Dạng Bài Tập Pascal của Tin Học 11 - Phần 3
151/Chạy chử 2:
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/Chuỗi đối xứng:
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/Phép trừ:
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/Diện tích hình thang:
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/Diện tích tam giác:
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/Tính lực hút giữa 2 vật:
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/Tính lương:
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/Tính PigNet:
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/Tính thể tích hình cầu:
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/Cộng thêm giây vào giờ hiện hành:
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/Đoán số bạn đang nghĩ trong đầu:
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ố nguyên:
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ố:
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:
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 nhiệt độ sang Farenheit:
Program Doi_nhiet_do;
Var
t:Real;
tiep:Char;
(*---------------------*)
FUNCTION Doi(x:Real):Real;
Begin
Doi:=((9*x/5) + 32);
End;
(*---------------------*)
BEGIN
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 nhiệt độ sang Celcius:
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:
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 ngày ra thứ trong tuần:
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:
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):
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:=so- n*(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:
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:
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ử:
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ệ thập phân sang hệ bất kì:
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ệ thập phân sang hệ bất phân:
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/Thập phân sang nhị phân:
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.
177/Thập phân sang thập lục:
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 tên tháng từ số ra chử:
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 tiền sao cho số tờ ít nhất:
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:
Program Doi_So_Ra_Chu;
Var
Tiep:Char;
Chuoitk,Chuoikq:String;
So:0..999;
Tram,Chuc,Donvi:0..9;
Begin
Tiep:='C';
While UpCase(Tiep)='C' Do
Begin
{$R+}
Chuoitk:='MOT HAI BA BON NAM SAU BAY TAM CHIN';
Write('-Nhap so can doi: ');
Readln(so);
If So = 0 Then
Writeln('So khong')
Else
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*Tram-3,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 trình tham quan:
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/Gấp giấy có độ dày 1 mét:
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/Giải phương trình trùng phương:
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 tìm tiết kiệm:
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/Hàm X mũ N:
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/Hoán vị 2 con trỏ thay cho hoán vị nội dung:
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 dẫn mua vé máy bay:
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(' 10-Tp 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 các số khác nhau của dãy số:
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 dãy Fibonaci:
Program Day_so_Fibonaci;
Var
n,j,pj,pj1,pj2:Integer;
Begin
Writeln('IN DAY SO FIBONACI');
Writeln('------------------');
Write('-Nhap so N= ');
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 lá cờ nước mĩ ra màn hình:
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 kẻ các dấu sao:
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/Khảo sát 2 đường tròn:
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/Khối lập phương chui qua khung chử nhật:
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 phiếu bầu cử chi đoàn:
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 bàn phím:
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 ngày hợp lệ:
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ố nhập vào:
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 của 2 số nguyên:
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 ngày:
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.

You might also like