Professional Documents
Culture Documents
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 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);
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;
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)=
Uses Crt;
Type Toado=Record
x,y:integer;
end;
Mang=array[0..30] of Toado;
Var n:Byte;
A:Mang;
P:ToaDo;
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 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
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.
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.
End;
'6' : Begin
Writeln('7- KET
THUC CHUONG TRINH');
Writeln;
End;
End;
Until Ch = '6'
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
{$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.
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.
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.
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.
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.
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.
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.
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.
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);
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.