Bài 1 :
Bạn hãy viết hàm Card(A) đếm số phần tử của tập hợp A cho trước có kiểu Set Of 0 .. 99 . (* hàm đếm số phần tử của tập hợp *)
Uses Crt;
Type Tap=set of 0..99;
Const inp='Number.dat';
Var S : Tap;
i : byte;
Procedure Nhap;
Var a: byte; f: text;
Begin S:=[];
Assign(f,inp); Reset(f);
While not SeekEoF(f) do begin
Readln(f,a); If (a>=0)and(a<=99) then S:=S+[a];
End;
Close(f);
End;
Function Card(S: Tap): byte;
Var i,n: byte;
Begin n:=0;
For i:=0 to 99 do If i in S then Inc(n);
Card:=n;
End;
BEGIN Nhap;
Clrscr;
Write('Tap S co ',Card(S),' phan tu.');
Readln;
END.
Bài 2 :
Bạn hãy lập chương trình tạo một tập hợp các số nguyên chẵn kiểu Byte và loại khỏi nó các số chia hết cho 3 . Kết quả thể hiện trên màn hình .
Uses Crt;
Const n=5;
Type
Danhsach=record holot: string[25];
ten: string[10];
tuoi: 0..99;
lop: string[3];
End ;
Var ds: array [1..20] of Danhsach;
i,j: byte;
f: file of Danhsach;
Procedure Doi(i,j: byte);
Var tg: Danhsach;
Begin tg:=ds[i];
ds[i]:=ds[j];
ds[j]:=tg;
End;
BEGIN ClrScr;
Writeln('Nhap danh sach hoc sinh tu file data.dat : ');
Writeln;
Assign(f,'data.dat'); Reset(f);
For i:=1 to n do Read(f,ds[i]);
Close(f);
For i:=1 to n-1 do For j:=i+1 to n do begin
If (ds[i].ten>ds[j].ten) then Doi(i,j) Else
If (ds[i].ten=ds[j].ten)and(ds[i].holot>ds[j].holot) then Doi(i,j);
end;
Writeln('Danh sach hoc sinh:');
For i:=1 to n do
With ds[i] do Writeln(holot:20,ten:11,tuoi:4,lop:5);
Writeln;
Write('Bam Enter de ket thuc...');
Readln;
END.
Bài 3 :
Xeựt chửụng trỡnh sau : Program B4 ; Var
Thoat : Set Of Char = [‘e’ , ’E’] ;
BEGIN
Write (‘ Hay go E de ket thuc : ‘) ; Repeat
Ch := Readkey ; Until Ch in thoat ; END .
Hãy tìm và sửa lỗi trong chương trình đó . Uses Crt;
Const
thoat: set of char=['e','E'];
Var ch: char;
BEGIN
Write('Hay go E de thoat khoi chuong trinh: ');
Repeat ch:=readkey;
Until ch in thoat;
END . Bài 4 :
Bạn hãy lập chương trình hiển thị một menu dạng sau trên màn hình 1. Xem
2. 2. Sua chua
3. 3. Loai bo
4. 4. Nhap them
5. 5. Thoat
Lua chon cua ban : _
Sau đó đợi gõ phím . Chương trình phải đợi cho tới khi phím gõ vào là một trong các chữ số 1 ..
5 hoặc các chữ cái đầu của các tuỳ chọn thì thông báo phím gõ vào hợp lệ và kết thúc chương trình . Trong chương trình phải dùng một tập hợp để kiểm tra việc nhập giá trị cho biến từ bàn phím .
(* Hieồn thũ menu *) Uses Crt;
Const
menu: set of char = ['1'..'5','X','S','L','N','T'];
Var ch: char;
BEGIN Clrscr;
Writeln(' 1. Xem ');
Writeln(' 2. Sua chua ');
Writeln(' 3. Loai bo ');
Writeln(' 4. Nhap them');
Writeln(' 5. Thoat ');
Write('Lua chon cua ban: ');
Repeat
ch:=readkey; ch:=Upcase(ch);
Until ch in menu;
Writeln;
Write('Ban da chon:');
Case ch of
'1','X': Writeln(' 1. Xem ');
'2','S': Writeln(' 2. Sua chua ');
'3','L': Writeln(' 3. Loai bo ');
'4','N': Writeln(' 4. Nhap them');
'5','T': Writeln(' 5. Thoat ');
End;
Readln;
END.
Bài 5 :
Hãy lập chương trình nhập vào một xâu nhị phân . Các kí tự nhập vào không hợp lệ bị bỏ qua . (* nhập một xâu nhị phân *)
Uses Crt;
Const bit : set of char= ['0','1'];
Var ch: char;
st: string;
BEGIN Clrscr;
st:='';
Write('Nhap vao mot xau nhi phan : ');
Repeat
ch:= Readkey;
If ch in bit then begin
st:=st+ch; Write(ch);
end
Else If ch<>#13 then Write(#7);
Until ch=#13;
Readln;
END.
Bài 6 :
Hãy lập chương trình nhập vào một xâu kí tự từ bàn phím . Yêu cầu các kí tự nhập vào phải là các chữ cái thuộc bảng chữ cái tiếng Anh , bỏ qua các phím khác .
(* Nhập một xâu toàn các chữ cái *) Uses Crt;
Const A:set of char=['a'..'z','A'..'Z'];
Var ch: char;
st: string;
BEGIN Clrscr;
st:='';
Writeln('Nhap vao mot xau toan cac chu cai:');
Repeat
ch:=Readkey;
If ch in A then begin
st:=st+ch; write(ch);
End
Else if ch<>#13 then Write(#7);
If ch=#0 then ch:=Readkey;
Until ch = #13;
END . Bài 7 :
Viết chương trình có chức năng thêm phần tử vào tập hợp trực tiếp từ bàn phím và loại bớt phần tử khỏi tập hợp cũng trực tiếp từ bàn phím .
(* loai bo cac phan tu khoi tap hop *) Uses Crt;
Var tap: set of char;
ch: char;
BEGIN tap:=[];
Writeln('Nhap cac phan tu cho mot tap hop cac ki tu: ');
Repeat
ch:=ReadKey;
tap:=tap+[ch];
Writeln(ch);
Until not(ch in ['a'..'z']);
Writeln('Cac phan tu cua tap hop la:');
For ch:='a' to 'z' do
If ch in tap then Write(ch,' ');
Writeln;
Writeln('Ban muon bo cac phan tu nao khoi tap hop:');
Repeat
ch:=ReadKey;
tap:=tap-[ch];
Writeln(ch);
Until not(ch in ['a'..'z']);
Writeln('Cac phan tu con lai cua tap hop la:');
For ch:='a' to 'z' do
If ch in tap then Write(ch,' ');
Readln;
END .