Tap hop trong pascal

7 9 0
Tap hop trong pascal

Đang tải... (xem toàn văn)

Thông tin tài liệu

Kết quả của phép so sánh là giá trị kiÓu Boolean tøc lµ : §óngTRUE hoÆc SaiFALSE Hai tập bằng nhau nếu chúng có phần tử nh nhau từng đôi một không kể thứ tự sắp xếp trong 2 tËp Ngîc l¹i [r]

(1)KiÓu tËp hîp I KiÓu tËp hîp Một tập hợp bao gồm số đối tợng nào đó có cùng chất Trong Pascal điều đó có ngiã là mô t¶ cïng mét kiÓu, kiÓu bµy gäi lµ kiÓu c¬ b¶n KiÓu c¬ b¶n b¾t buéc ph¶i lµ mét kiÓu v« híng hay đoạn và không đợc là số thực Các đối tợng này gọi là các phần tử tập Số phần tử cực đại cho phÐp Boland Pascal lµ 256 §Ó m« t¶ kiÓu vµ khai b¸o biÕn tËp hîp, ngêi ta dïng tõ kho¸ SET OF theo sau lµ kiÓu c¬ b¶n T (kiÓu cña c¸c phÇn tö cña tËp) VD : TYPE Chu_Cai = SET OF CHAR; Chu_So = SET OF 9; VAR SO : CHU_SO; L : CHU_CAI; A : SET OF BYTE; II X¸c lËp mét tËp Một tập hợp đợc xác định cách liệt kê các phần tử tập hợp, chúng cách dấu phẩy và đợc đặt dấu ngoặc vuông VD : []; [3 5]; [3,4,5,8] hoÆc [3 5,8]; ['A' 'C','Y','Z']; B¶n th©n c¸c phÇn tö cña tËp còng cã thÓ cho b»ng biÕn hoÆc biÓu thøc VD : [X+Y, I*J, 3, 4] III C¸c phÐp to¸n trªn tËp PhÐp g¸n Víi c¸ch m« t¶ ë trªn ta cã thÓ g¸n VD : SO := [3 5]; L := ['A' 'E','Z']; A := [1 100,140 200]; L := []; Chóng ta kh«ng thÓ g¸n L := [3,5] v× kiÓu c¬ b¶n cña chóng kh«ng t¬ng thÝch víi PhÐp hîp Hîp cña tËp lµ mét tËp cã c¸c phÇn tö thuéc hai tËp §îc kÝ hiÖu b»ng dÊu + VD : A := [3 5]; B := [4 6,10,123]; C := A+B; { TËp C sÏ lµ [3 6,10,123] } PhÐp giao Giao cña tËp lµ mét tËp cã c¸c phÇn tö n»m c¶ tËp §îc kÝ hiÖu b»ng dÊu * VD : Víi VD trªn ta g¸n C := A*B; TËp C sÏ lµ [4,5] PhÐp hiÖu HiÖu cña tËp lµ tËp c¸c phÇn tö thuéc tËp thø nhÊt nhng khån thuéc tËp thø hai VD : Víi VD trªn ta g¸n C := A-B; TËp C sÏ lµ [3]; C := B-A; TËp C sÏ lµ [6,10,123]; PhÐp thö "thuéc vÒ" Là phép thử để xem biến, hay giá trị có thuộc tập nào đó không VD : §Ó thö biÕn ch cã n»m c©u tr¶ lêi Cã b»ng tiÕng ViÖt hoÆc b»ng tiÕng Anh lµ Yes kh«ng, b»ng c¸ch th«ng thêng ta viÕt IF(Ch='Y')or(Ch='y')or(Ch='C')or(Ch='c')THEN Song ta cã thÓ viÕt ng¾n gän víi phÐp thö IN nh sau : (2) IF Ch in['Y','y','C','c'] THEN C¸c phÐp so s¸nh <>,=,<=,>= Hai tập đợc đem so sánh trớc hết phải có cùng kiểu Kết phép so sánh là giá trị kiÓu Boolean tøc lµ : §óng(TRUE) hoÆc Sai(FALSE) Hai tập chúng có phần tử nh đôi (không kể thứ tự xếp tËp) Ngîc l¹i víi phÐp = lµ phÐp so s¸nh kh¸c Phép so sánh <= có giá trị TRUE tất phần tử tập thứ thuộc tập thứ hai Phép so sanh >= có giá trị TRUE tất phần tử tập thứ hai thuộc tập thứ Chó ý : Trong Pascal kh«ng tån t¹i phÐp so s¸nh <,> Muèn so s¸nh lín h¬n hay nhá h¬n ta dïng thñ thuËt sau IF (A<=B) AND (A<>B) THEN Writeln('A<B'); Tæng kÕt c¸c phÐp to¸n trªn tËp | To¸n tö | KÝ hiÖu | KiÓu kÕt qu¶ | -| G¸n | := | SET OF | | Hîp | + | SET OF | | Giao | * | SET OF | | HiÖu | | SET OF | | Thuéc vÒ | IN | Boolean | | B»ng | = | Boolean | | Kh¸c | <> | Boolean | | Bao hµm | <=,>= | Boolean | Bµi 1: { ViÕt ch¬ng tr×nh nhËp tõ bµn phÝm tËp sè A gåm c¸c sè nguyªn kho¶ng 99 b»ng c¸ch nhập liên tục các số nhập số thì kết thúc T¬ng tù nhËp tËp B a TÝnh giao cña tËp In mµn h×nh b TÝnh hîp cña tËp In mµn h×nh} uses crt; var a,b,t:set of byte;{TËp a,b,t kiÓu byte} i:byte;{i kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} a:=[];b:=[];{G¸n tËp A vµ B b»ng rçng} writeln('Nhap tap A'); repeat readln(i);{§äc i} if i>0 then a:=a+[i];{NÕu i>0 th× céng i vµo tËp A} until i=0;{Cho đến i=0} writeln('Nhap tap B'); repeat readln(i);{§äc I} if i>0 then b:=b+[i];{NÕu i>0 th× céng i vµo tËp B} (3) until i=0;{Cho đến i=0} Writeln('Giao'); t:=a*b;{G¸n t b»ng giao cña A vµ B} for i:=1 to 99 do{Cho i chạy từ đến 99} if i in t then write(i,' ');{NÕu i thuéc t th× xuÊt i} writeln; writeln('Hop'); t:=a+b;{G¸n t b»ng hîp cña A vµ B} for i:=1 to 99 do{Cho i chạy từ đến 99} if i in t then write(i,' ');{NÕu i thuéc t th× xuÊt i} readln; end Bµi 2: { NhËp N ViÕt ch¬ng tr×nh t¹o mét tËp sè ngÉu nhiªn kho¶ng tõ 255 b»ng c¸ch : - T¹o ngÉu nhiªn N sè kho¶ng tõ 255 Tính phần bù tập đó VD : N=5 cã sè : thì tập đó là [0 3,6] phÇn bï cña nã [4,5,7 255]} uses crt; var th:set of byte;{TËp th kiÓu byte} i,a,n:integer;{i,a,n kiÓu integer} begin clrscr;{Xo¸ mµn h×nh} randomize; write('N = ');readln(n);{§äc N} th:=[];{G¸n tËp th b»ng rçng} for i:=1 to n do{Cho i chạy từ đến n} begin a:=random(256);{G¸n a b»ng sè ngÉu nhiªn kho¶ng 255} th:=th+[a];{Céng a vµo th} end; writeln('Phan bu'); th:=[0 255]-th;{G¸n th b»ng phÇn bï cña nã} for i:=0 to 255 do{Cho i chạy từ đến 255} if i in th then write(i,' ');{NÕu i thuéc th th× xuÊt i} readln; end Bµi 3: { NhËp sè N (N<10) T¹o N tËp sè b»ng c¸ch víi mçi tËp ta thùc hiÖn : - Tạo 100 số ngẫu nhiên khoảng từ 255 (có thể trùng nhau) cho vào tập đó a In mµn h×nh sè phÇn tö cña mçi tËp b Xem tập nào là lớn In màn hình các số thuộc tập đó Híng dÉn Nªn viÕt hµm sopt(a)tr¶ vÒ sè phÇn tö cña tËp a} uses crt; type taphop=set of byte; var th:array[1 10]of taphop;{Khai b¸o m¶ng th 10 phÇn tö kiÓu taphop} i,j,a,max,n:byte;{i,j,a,max,n kiÓu byte} function sopt(th:taphop):byte; var i,so:byte;{Khai b¸o i,so kiÓu byte} begin so:=0;{G¸n so b»ng 0} for i:=0 to 255 do{Cho i chạy từ đến 255} if i in th then inc(so);{NÕu i thuéc th th× t¨ng so} sopt:=so;{G¸n sopt b»ng so} end; begin (4) clrscr;{Xo¸ mµn h×nh} randomize; write('N = ');readln(n);{§äc N} for i:=1 to n th[i]:=[];{G¸n th[1] th[n] b»ng rçng} for i:=1 to n do{Cho i chạy từ đến n} for j:=1 to 100 do{Cho j chạy từ đến 100} begin a:=random(256);{G¸n a b»ng sè ngÉu nhiªn kho¶ng 255} th[i]:=th[i]+[a];{Céng a vµo th[i]} end; max:=0;{G¸n max b»ng 0} for i:=1 to n do{Cho i chạy từ đến n} begin writeln('So phan tu tap ',i,' : ',sopt(th[i]));{XuÊt sè phÇn tö tËp i} if max<sopt(th[i])then{NÕu max nhá h¬n sè phÇn tö tËp i} begin max:=sopt(th[i]);{G¸n max b»ng sè phÇn tö tËp i} a:=i;{G¸n a b»ng i} end; end; writeln('Tap ',a,' co so phan tu lon nhat');{XuÊt tËp lín nhÊt} for i:=0 to 255 do{Cho i chạy từ đến 255} if i in th[a] then write(i,' ');{NÕu i thuéc th[a] th× xuÊt i} readln; end Bµi 4: { NhËp N ViÕt ch¬ng tr×nh in mét ho¸n vÞ ®Çu tiªn cña N VD : N = 264358791 Híng dÉn G¸n th:=[] Thùc hiÖn lÊy N sè b»ng c¸ch : - Lấy ngẫu nhiên số đó khoảng từ N nó cha xuất th - Céng nã vµo th} uses crt; var i,a,n:byte;{i,a,n kiÓu byte} th:set of byte;{th kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} write('N = ');readln(n);{§äc N} th:=[];{G¸n th b»ng rçng} for i:=1 to n do{Cho i chạy từ đến n} begin repeat a:=random(n)+1 until not(a in th);{Gán a số ngẫu nhiên từ n a không thuéc th} write(a,' ');{XuÊt a} th:=th+[a];{Céng a vµo th} end; readln; end Bµi 5: { NhËp N (N<=255) T×m c¸c sè nguyªn tè kh«ng vît qu¸ N b»ng sµng Eratosthene Híng dÉn G¸n th:=[2 N] Cho i chạy từ đến trunc(sqrt(n)) NÕu i thuéc th th× xo¸ c¸c béi cña i kho¶ng i*i -> N khái th C¸c phÇn tö cßn l¹i chÝnh lµ c¸c sè nguyªn tè} uses crt; var (5) i,n:byte;{i,n kiÓu byte} th:set of byte;{TËp th kiÓu byte} a:integer;{a kiÓu integer} begin clrscr;{Xo¸ mµn h×nh} write('N = ');readln(n);{§äc N} th:=[2 n];{G¸n th b»ng [2 n]} for i:=2 to trunc(sqrt(n))do{Cho i chạy từ đến trunc(sqrt(n))} if i in th then{NÕu i thuéc th} begin a:=i*i;{G¸n a b»ng i*i} while a<=n do{Trong a<=n th×} begin th:=th-[a];{Lo¹i a khái th} a:=a+i;{Tăng a thêm i đơn vị} end; end; for i:=2 to n do{Cho i chạy từ đến n} if i in th then write(i:4);{NÕu i thuéc th th× xuÊt i} readln; end Bµi 6: { Nhập vào chữ chuỗi kí tự Xem có bao nhiêu loại kí tự xuất đó VD : "abcdeDcB" Cã lo¹i kÝ tù Híng dÉn Khai b¸o th lµ tËp hîp kiÓu kÝ tù for i=1 -> length(s)do th:=th+[s[i]]; Sau đó for i:=0 to 255 NÕu chr(i)xuÊt hiÖn TH th× t¨ng dem len 1} uses crt; var s:string;{X©u S} i,dem:byte;{i,dem kiÓu byte} th:set of char;{TËp th} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} th:=[];{G¸n th b»ng rçng} for i:=1 to length(s)do{Cho i chạy từ đến chiều dài xâu S} th:=th+[s[i]];{Céng s[i] vµo th} dem:=0;{G¸n dem b»ng 0} for i:=0 to 255 do{Cho i chạy từ đến 255} if chr(i)in th then inc(dem);{NÕu kÝ tù cã m· lµ i cã th th× t¨ng dem} writeln(dem);{XuÊt dem} readln; end Bµi 7: { ViÕt ch¬ng tr×nh nhËp vµo mét chuçi kÝ tù a TÝnh c¸c tËp sau - TËp A chØ chøa c¸c ch÷ c¸i hoa - TËp B chØ chøa c¸c ch÷ c¸i thêng - TËp C chØ chøa c¸c ch÷ sè (6) - TËp D chøa mäi kÝ tù l¹i b In màn hình các tập đó} uses crt; var s:string;{X©u S} a,b,c,d:set of char;{TËp a,b,c,d kiÓu kÝ tù} i:byte;{i kiÓu byte} ch:char;{ch kiÓu kÝ tù} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(S);{§äc S} a:=[];b:=[];c:=[];d:=[];{G¸n a,b,c,d b»ng rçng} for i:=1 to length(s)do{Cho i chạy từ đến chiều dài xâu S} if s[i]in['A' 'Z']then a:=a+[s[i]]{NÕu s[i]thuéc 'A' 'Z' th× céng s[i] vµo tËp A} else if s[i]in['a' 'z']then b:=b+[s[i]]{Ngîc l¹i nÕu s[i]thuéc 'a' 'a' th× céng s[i] vµo tËp B} else if s[i]in['0' '9']then c:=c+[s[i]]{Ngîc l¹i nÕu s[i]thuéc '0' '9' th× céng s[i] vµo tËp C} else d:=d+[s[i]];{Ngîc l¹i nÕu th× céng s[i] vµo tËp D} writeln('Tap A'); for ch:='A' to 'Z' do{Cho ch chạy từ 'A' đến 'Z'} if ch in a then write(ch,' ');{NÕu ch thuéc tËp A th× xuÊt ch} writeln; writeln('Tap B'); for ch:='a' to 'z'do{Cho ch chạy từ 'a' đến 'a'} if ch in b then write(chr(i),' ');{NÕu ch thuéc tËp B th× xuÊt ch} writeln; writeln('Tap C'); for ch:='0' to '9'do{Cho ch chạy từ '0' đến '9'} if ch in c then write(chr(i),' ');{NÕu ch thuéc tËp C th× xuÊt ch} writeln; writeln('Tap D'); for i:=0 to 255 do{Cho i chạy từ đến 255} if chr(i)in d then write(chr(i),' ');{Nếu kí tự có mã i thuộc tập D thì xuất kí tự đó} readln; end Bµi 8: { ViÕt thñ tôc tracnghiem(s,sa,sb,sc,sd:string;kq:char); Thủ tục in câu hỏi s và các câu lựa chọn sa,sb,sc,sd Sau đó chơng trình đợi đến ngời dùng ấn các phím A,B,C,D So sánh kết đó với kq Nếu đúng thì in "Ban tra loi dung" ngîc l¹i in " Ban tra loi sai"} uses crt; procedure tracnghiem(s,sa,sb,sc,sd:string;kq:char); var ch:char;{Khai b¸o ch kiÓu kÝ tù} begin clrscr;{Xo¸ mµn h×nh} writeln(s);{XuÊt S} writeln(sa);{XuÊt sa} writeln(sb);{XuÊt sb} writeln(sc);{XuÊt sc} writeln(sd);{XuÊt sd} repeat ch:=upcase(readkey) until ch in['A' 'D'];{Nhận ch ch là các phím A,B,C,D} (7) if ch=upcase(kq)then writeln('Ban tra loi dung'){NÕu ch b»ng kÝ tù kq th× xuÊt §óng} else writeln('Ban tra loi sai');{Ngîc l¹i th× xuÊt Sai} readln; end; begin tracnghiem('Bo nho co may loai','a 1','b 2','c 3','d 4','b'); end 77777777777777777777777777777777777777777777777777777777777777777777 77777777777777777777777777777777777777777777777777777777777777777777 77777777777777777777777777777777777777777777777777777777777777777777 77777777777777777777777777777777777777777777777777777777777777777777 7777777777777777777777777777 (8)

Ngày đăng: 08/06/2021, 00:15

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan