Tập hợp trong Pascal

Chia sẻ: Nguyen Van | Ngày: | Loại File: DOC | Số trang:8

0
162
lượt xem
47
download

Tập hợp trong Pascal

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

I. Kiểu tập hợp Một tập hợp bao gồm một số đối tợng nμo đó có cùng bản 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 con vμ không đợc lμ số thực. Các đối tợng nμy gọi lμ các phần tử của tập. Số phần tử cực đại cho phép trong 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...

Chủ đề:
Lưu

Nội dung Text: Tập hợp trong Pascal

  1. KiÓu tËp hîp I. KiÓu tËp hîp Mét tËp hîp bao gåm mét sè ®èi tîng nµo ®ã cã cïng b¶n 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 con vµ kh«ng ®îc lµ sè thùc. C¸c ®èi tîng nµy gäi lµ c¸c phÇn tö cña tËp. Sè phÇn tö cùc ®¹i cho phÐp trong 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 0..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 b»ng c¸ch liÖt kª c¸c phÇn tö cña tËp hîp, chóng c¸ch nhau b»ng dÊu phÈy vµ ®îc ®Æt gi÷a 2 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 1. 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 nhau 2. PhÐp hîp Hîp cña 2 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] } 3. PhÐp giao Giao cña 2 tËp lµ mét tËp cã c¸c phÇn tö n»m trong c¶ 2 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]
  2. 4. PhÐp hiÖu HiÖu cña 2 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]; 5. PhÐp thö "thuéc vÒ" Lµ mét phÐp thö ®Ó xem mét biÕn, hay mét gi¸ trÞ cã thuéc mét tËp nµo ®ã kh«ng VD : §Ó thö biÕn ch cã n»m trong 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 : IF Ch in['Y','y','C','c'] THEN 6. C¸c phÐp so s¸nh ,=,= Hai tËp ®îc ®em ra so s¸nh tríc hÕt ph¶i cã cïng kiÓu c¬ b¶n. KÕt qu¶ cña phÐp so s¸nh lµ gi¸ trÞ kiÓu Boolean tøc lµ : §óng(TRUE) hoÆc Sai(FALSE) 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 víi phÐp = lµ phÐp so s¸nh kh¸c nhau PhÐp so s¸nh = sÏ cã gi¸ trÞ TRUE nÕu tÊt c¶ phÇn tö tËp thø hai ®Òu thuéc tËp thø nhÊt 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
  3. 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 trong kho¶ng 1..99 b»ng c¸ch nhËp liªn tôc c¸c sè cho ®Õn khi nhËp sè 0 th× kÕt thóc T¬ng tù nhËp tËp B a. TÝnh giao cña 2 tËp. In ra mµn h×nh b. TÝnh hîp cña 2 tËp. In ra 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 khi 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} until i=0;{Cho ®Õn khi 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õ 1 ®Õ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õ 1 ®Õ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 ra mét tËp sè ngÉu nhiªn trong kho¶ng tõ 0..255 b»ng c¸ch : - T¹o ra ngÉu nhiªn N sè trong kho¶ng tõ 0..255 TÝnh phÇn bï cña tËp ®ã VD : N=5 cã 6 sè : 0 1 2 3 6 2 th× tËp ®ã lµ [0..3,6] phÇn bï cña nã [4,5,7..255]}
  4. 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õ 1 ®Õn n} begin a:=random(256);{G¸n a b»ng sè ngÉu nhiªn trong kho¶ng 0..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õ 0 ®Õ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
  5. begin a:=random(256);{G¸n a b»ng sè ngÉu nhiªn trong kho¶ng 0..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õ 1 ®Õn n} begin writeln('So phan tu tap ',i,' : ',sopt(th[i]));{XuÊt sè phÇn tö tËp i} if max
  6. Híng dÉn G¸n th:=[2..N] Cho i ch¹y tõ 2 ®Õn trunc(sqrt(n)) NÕu i thuéc th th× xo¸ c¸c béi cña i trong kho¶ng i*i -> N ra khái th C¸c phÇn tö cßn l¹i chÝnh lµ c¸c sè nguyªn tè} uses crt; var 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õ 2 ®Õ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
  7. th:=[];{G¸n th b»ng rçng} for i:=1 to length(s)do{Cho i ch¹y tõ 1 ®Õ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õ 0 ®Õn 255} if chr(i)in th then inc(dem);{NÕu kÝ tù cã m· lµ i cã trong 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è - TËp D chøa mäi kÝ tù con l¹i b. In ra 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õ 1 ®Õ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'}
  8. 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õ 0 ®Õ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 sÏ in ra c©u hái s vµ c¸c c©u lùa chän sa,sb,sc,sd. Sau ®ã ch¬ng tr×nh sÏ ®îi ®Õn khi ngêi dïng Ên c¸c phÝm A,B,C,D. So s¸nh kÕt qu¶ ®ã víi kq. NÕu ®óng th× in ra "Ban tra loi dung" ngîc l¹i in ra " 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 cho ®Õn khi ch lµ c¸c phÝm A,B,C,D} 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.

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản