intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

xâu kí tự (String) Trong pascal

Chia sẻ: Diemanh Diemanh | Ngày: | Loại File: DOC | Số trang:15

1.373
lượt xem
169
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Xâu kí tự có thể hiểu đơn giản là một mảng một chiều có kiểu phần tử là các kí tự (CHAR). Nhưng xâu kí tự chỉ có thể có tối đa 255 kí tự nhưng nó có các lệnh xử lí xâu như : xoá một đoạn trong xâu, copy một đoạn trong xâu... mà mảng kí tự không có được

Chủ đề:
Lưu

Nội dung Text: xâu kí tự (String) Trong pascal

  1. String I. §Þnh nghÜa x©u kÝ tù (String) X©u kÝ tù cã thÓ hiÓu ®¬n gi¶n lµ mét m¶ng mét chiÒu cã kiÓu phÇn tö lµ c¸c kÝ tù (CHAR). Nh ng x©u kÝ tù chØ cã thÓ cã tèi ®a 255 kÝ tù nhng nã cã c¸c lÖnh xö lÝ x©u nh : xo¸ mét ®o¹n trong x©u, copy mét ®o¹n trong x©u... mµ m¶ng kÝ tù kh«ng cã ®îc II. C¸ch khai b¸o x©u VAR Tªn_x©u : STRING [®é_dµi_cùc_®¹i]; VD : Ta khai b¸o FileName : String[20]; Sau ®ã ta thùc hiÖn phÐp g¸n : FileName := 'VIDU.PAS'; Lóc nµy chiÒu dµi thùc sù cña x©u lµ 8 mÆc dï ®é dµi cùc ®¹i lµ 20 Ta xÐt cÊu tróc cña x©u : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 V I D U .PA S* * * * * * * * * * * * KÝ tù 0 chøa ®é dµi thùc sù cña x©u, ta cã thÓ viÕt §é_dµi_thùc_sù_cña_x©u = Ord(Filename[0]); KÝ hiÖu * biÓu diÔn kÝ tù kh«ng x¸c ®Þnh NÕu trong qu¸ tr×nh thao t¸c, ®é dµi cña x©u vît qu¸ ®é dµi cùc ®¹i th× m¸y sÏ tù ®éng c¾t bá phÇn phÝa sau x©u kÓ tõ vÞ trÝ ®é dµi cùc ®¹i. VD : Khi ta g¸n FileName := 'HOI THI TIN HOC TRE KHONG CHUYEN'; Th× lóc ®ã FileName = 'HOI THI TIN HOC TRE '; II I. Truy nhËp vµo phÇn tö cña m¶ng Do cÊu tróc cña x©u t ¬ng tù cña m¶ng nªn c¸ch truy xuÊt cña nã còng t ¬ng tù cña m¶ng Tªn_x©u [chØ_sè_phÇn_tö] VD : Muèn g¸n phÇn tö thø 3 cña x©u lµ 'A' Filename [3] := 'A'; IV. C¸c thao t¸c trªn x©u 1. PhÐp céng x©u VD : S1 := 'PHAN MEM '; S2 := 'SANG TAO'; S := S1 + S2; 1
  2. Sau ®ã S = 'PHAN MEM SANG TAO'; 2. So s¸nh x©u kÝ tù Khi so s¸nh 2 x©u m¸y sÏ so s¸nh tõng cÆp kÝ tù cña 2 x©u tõ tr¸i qua ph¶i theo gi¸ trÞ cña b¶ng m· ASCII NÕu 2 x©u cã ®é dµi kh¸c nhau song sè kÝ tù gi«ng nhau ®Õn ®é dµi cña x©u ng¾n nhÊt gièng nhau th× x©u cã ®é dµi ng¾n h¬n th× bÐ h¬n VD : 'FILENAME' < 'FILENAMEA' cho gi¸ trÞ TRUE 'FiLENAME' < 'FILENAME' cho gi¸ trÞ FALSE 'FILENAME' = 'FILENAME' cho gi¸ trÞ TRUE 3. Thao t¸c nhËp xu©t Cã thÓ dïng c¸c hµm Write, Writeln, Readln ®èi víi x©u kÝ tù VD : readln(st); Writeln(st); V. C¸c hµm chuÈn xö lÝ x©u kÝ tù 1. Length (St) Hµm cho ta ®é dµi cña x©u kÝ tù St VD : l := length(st); 2. Delete (St, Pos, Num) Thñ tôc xo¸ ®i Num kÝ tù kÓ tõ vÞ trÝ Pos trong x©u St VD : S := 'TOI DI HOC'; Delete(s,5,3); { Sau ®ã S = 'TOI HOC' } 3. Insert (Obj, St, Pos); Thñ tôc xen x©u Obj vµo x©u St t¹i vÞ trÝ Pos VD : S := 'THANH DA NANG'; Insert('PHO ',S,7); { Sau ®ã S = 'THANH PHO DA NANG' } 4. Str (Value, St) Thñ tôc biÕn ®æi gi¸ trÞ b»ng sè nguyªn hoÆc thùc Value thµnh mét x©u biÓu diÔn sè ®ã. C¸ch biÓu diÔn cña St sÏ ®îc quy c¸ch do qui c¸ch cña Value VD : I := 512; Str(I:5,St); SÏ cho St = ' 512'; 5. Val St, Var1, Code) 2
  3. Thñ tôc biÕn ®æi x©u St (biÓu diÔn sè nguyªn, th c) thµnh mét sè nguyªn thùc chøa trong Var1. Code lµ sè nguyªn ®Ó ph¸t hiÖn lçi, nÕu phÐp biÕn ®æi ®óng th× Code cã gi¸ trÞ b»ng 0. NÕu sai Code sÏ lµ vÞ trÞ cña kÝ tù sai. VD : St := '123.56'; Val(st,X,Result); SÏ cho X=123.56 vµ Result=0 St := '123X'; Val(st,X,result); SÏ cho X kh«ng x¸c ®Þnh vµ Result=4 6. Copy (St, Pos, Size) Hµm Copy sÏ nhËn Size kÝ tù trong x©u St tõ vÞ trÝ Pos VD : St := '123456789'; St1 := Copy(St,3,2); SÏ cho St1='34' 7. Concat(St1,St2,...StN) Hµm ghÐp nèi c¸c x©u St1,St2,...StN thµnh x©u kÝ tù theo thø tù ®· viÕt VD : St1 := 'BORLAND '; St2 := 'PASCAL '; St3 := '7.0'; St := Concat(St1,St2,St3); SÏ cho St='BORLAND PASCAL 7.0'; C¸ch viÕt nµy t ¬ng tù víi ST := St1 + St2 + ... + StN 8. Pos (Obj, Target) Hµm tr¶ l¹i vÞ trÝ ®Çu tiªn cña x©u Obj gÆp trong x©u Target Pos = 0 nÕu kh«ng t×m thÊy VD : St := '123456789'; Pos('45',St) cho gi¸ trÞ b»ng 3 Pos('4X',St) @1cho gi¸ trÞ 0 v× kh«ng t×m thÊy Bµi 1:{ NhËp mét chuçi kÝ tù. TØa bá dÊu c¸ch bªn ph¶i, tr¸i, tØa gi÷a (nÕu gi÷a 2 tõ cã nhiÒu dÊu c¸ch chØ ®Ó l¹i 1 dÊu c¸ch VD : " que huong " -> "que huong"} uses crt; var s:string;{X©u S} i:byte;{i kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} 3
  4. while(s[1]=' ')and(s'')do delete(s,1,1);{Xo¸ c¸c dÊu c¸ch ®Çu cña S} while(s[length(s)]=' ')and(s'')do delete(s,length(s),1);{Xo¸ c¸c dÊu c¸ch ë cuèi} i:=1;{G¸n i b»ng 1} while i
  5. end. Bµi 3: { NhËp mét chuçi kÝ tù. §æi chuçi nµy thµnh a. Ch÷ in hoa b. Ch÷ in th êng c. Ch÷ in hoa ë ®Çu tõ VD : luOnG tHe ViNH In ra : LUONG THE VINH luong the vinh Luong The Vinh} uses crt; var s:string;{X©u S} i:byte;{i kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} for i:=1 to length(s)do s[i]:=upcase(s[i]);{§æi S thµnh hoa (dïng upcase)} writeln(s);{XuÊt S} for i:=1 to length(s)do{Cho i ch¹y tõ 1 ®Õn ®é dµi S} if(s[i]>='A')and(s[i]
  6. S := ' '+S; Cho i ch¹y tõ tr¸i sang ph¶i. NÕu s[i]lµ dÊu c¸ch vµ s[i+1] lµ ch÷ th× t¨ng sè tõ lªn 1} var s:string;{X©u S} i,so:byte;{i,so kiÓu byte} begin write('S = ');readln(s);{§äc S} so:=0;{G¸n so b»ng 0} s:=' '+s;{Thªm dÊu c¸ch vµo ®Çu s} for i:=1 to length(s)-1 do{Cho i ch¹y tõ 1 ®Õn ®é dµi x©u s-1} if(s[i]=' ')and(s[i+1]' ')then inc(so);{NÕu s[i]lµ ' ' vµ s[i+1]kh¸c ' ' th× t¨ng so} writeln('Co ',so,' tu');{XuÊt so} readln; end. Bµi 5:{ NhËp chuçi kÝ tù. §Õm xem trong chuçi cã bao nhiªu kÝ tù, mçi kÝ tù xuÊt hiÖn bao nhiªu lÇn. H íng dÉn Dïng m¶ng solan:ARRAY[0..255]OF byte ®Ó lu sè lÇn xuÊt hiÖn cña c¸c kÝ tù cã m· ASCII. VD : Ch÷ A xuÊt hiÖn 3 lÇn th× ta cã solan[ord('A')]=3 hay solan[65]=3} uses crt; var s:string;{X©u S} solan:array[0..255]of byte;{M¶ng solan 0..255 kiÓu byte} i:byte;{i kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} for i:=1 to length(s)do{Cho i ch¹y tõ 1 ®Õn ®é dµi S} inc(solan[ord(s[i])]); for i:=0 to 255 do{Cho i ch¹y tõ 0 ®Õn 255} if solan[i]>0 then{NÕu solan[i]>0 th×} begin writeln('Ki tu ',chr(i),' xuat hien ',solan[i],' lan');{XuÊt kÝ tù i vµ solan[i]} end; 6
  7. readln; end. Bµi 6: { ViÕt thñ tôc - Xãa n kÝ tù tõ vÞ trÝ v cña chuçi S (gièng Delete(s,v,n)cña Pascal) - ChÌn S1 vµo sau vÞ trÝ v cña x©u S (gièng Insert(s1,s,v)cña Pascal) H íng dÉn Chóng ta coi chuçi lµ m¶ng c¸c kÝ tù. Sau khi thùc hiÖn c¸c thao t¸c xo¸, dån trªn chuçi. Ta g¸n l¹i chiÒu dµi cña chuçi b»ng c¸ch s[0]:=chr(n); N lµ chiÒu dµi thùc sù} uses crt; var s:string;{X©u S} procedure xoa(var s:string;v,n:byte); var i:byte;{Khai b¸o i kiÓu byte} begin for i:=v to v+n-1 do{Cho i ch¹y tõ v ®Õn ®é dµi v+n-1} s[i]:=s[i+n];{G¸n s[i]b»ng s[i+n]} s[0]:=chr(length(s)-n);{CËp nh©t l¹i ®é dµi thùc sù x©u S} end; procedure chen(s1:string;var s:string;v:byte); var i,l:byte;{Khai b¸o i,l kiÓu byte} begin l:=length(s1);{G¸n l b»ng ®é dµi x©u S1} for i:=length(s)+l downto v+l do{Cho i ch¹y tõ ®é dµi S+l ®Õn ®é dµi v+l} s[i]:=s[i-l];{G¸n s[i]b»ng s[i-l]} for i:=1 to l do{Cho i ch¹y tõ 1 ®Õn l} s[v+i-1]:=s1[i];{G¸n s[v+i-1]b»ng s1[i]} s[0]:=chr(length(s)+l);{CËp nh©t l¹i ®é dµi thùc sù x©u S} end; begin clrscr;{Xo¸ mµn h×nh} s:='PHAM HUU NGON'; xoa(s,6,4); writeln(s); chen('HUU ',s,6); writeln(s); 7
  8. readln; end. Bµi 7: { ViÕt hµm - TrÝch n kÝ tù tõ vÞ trÝ v cña chuçi S (gièng hµm Copy(s,v,n)cña Pascal) - Tr¶ l¹i vÞ trÝ ®Çu tiªn cã mÆt cña chuçi S1 trong x©u S (gièng hµm POS(s1,s) cña Pascal)} uses crt; var s:string;{X©u S} function chep(s:string;v,n:byte):string; var s1:string;{X©u s1} i:byte;{i kiÓu byte} begin for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N} s1[i]:=s[v+i- 1];{G¸n s1[i]b»ng s[v+i-1]} s1[0]:=chr(n);{CËp nh©t l¹i ®é dµi thùc sù x©u S} chep:=s1;{G¸n chep b»ng s1} end; function tim(s1:string;s:string):byte; var i:byte;{Khai b¸o i kiÓu byte} begin for i:=1 to length(s)-length(s1)+1 do{Cho i ch¹y tõ 1 ®Õn ®é dµi s-®é dµi s1+1} if chep(s,i,length(s1))=s1 then{NÕu chep(s,i,length(s1))=s1 th×} begin tim:=i;{G¸n tim b»ng i} exit;{Tho¸t khái ch¬ng tr×nh con} end; tim:=0;{G¸n tim b»ng 0} end; begin clrscr;{Xo¸ mµn h×nh} s:='PHAM HUU NGON'; writeln(chep(s,6,3)); writeln(tim('NGON',s)); readln; 8
  9. end. Bµi 8: { §äc mét chuçi kÝ tù. Cho ch¹y qu¶ng c¸o trªn mµn h×nh a. Tõ tr¸i qua ph¶i b. Tõ ph¶i qua tr¸i c. Ch¹y cïng lóc 2 dßng kÝ tù tõ bªn tr¸i vµ bªn ph¶i vµo gi÷a mµn h×nh H íng dÉn ViÕt thñ tôc viet(x,y:integer;s:string) cã t¸c dông viÕt chuçi s ë vÞ trÝ x,y} uses crt; var x,y:integer;{x,y kiÓu integer} s:string;{X©u S} procedure viet(x,y:integer;s:string); var l:byte;{Khai b¸o l kiÓu byte} begin l:=length(s);{G¸n l b»ng ®é dµi S} if x0 th× di chuyÓn tíi (x,y)ngîc l¹i tíi (1,y)} write(copy(s,1,80-x)); end end; begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} for x:=80 downto -length(s)do{Cho i ch¹y tõ 80 xuèng -length(s)} begin viet(x,12,s); delay(40); 9
  10. gotoxy(1,12);clreol;{Xo¸ dßng 12} end; for x:=-length(s)to 80do{Cho i ch¹y tõ -length(s)®Õn 80} begin viet(x,12,s); delay(40); gotoxy(1,12);clreol;{Xo¸ dßng 12} end; for x:=80 downto -length(s)do{Cho i ch¹y tõ 80 xuèng -length(s)} begin viet(x,12,s);viet(-length(s)+80-x,12,s); delay(40); gotoxy(1,12);clreol;{Xo¸ dßng 12} end; end. Bµi 9:{ §äc mét chuçi kÝ tù. In ra mµn h×nh chuçi kÝ tù ®ã a. C¨n tr¸i mµn h×nh b. C¨n ph¶i mµn h×nh c. C¨n gi÷a mµn h×nh} var s:string;{X©u S} i:byte;{i kiÓu byte} begin write('S = ');readln(s);{§äc S} writeln(s); writeln(s:80); writeln(s:40+(length(s)div 2)); readln; end. Bµi 10: { §äc tõ bµn phÝm chuçi kÝ tù chØ gåm 'A' vµ 'B'. §a ra mµn h×nh chuçi nÐn theo quy luËt sau. §Õm sè kÝ tù kÒ nhau vµ gièng nhau, thay b»ng kÝ tù ®¹i diÖn vµ sè ®· nÐn. NÕu sè ®· nÐn b»ng 1 th× kh«ng ghi sè nÐn chØ ghi kÝ tù VD : AAAAAABAAABBBBBAABABBBBB Chuçi sau khi nÐn A6BA3B5A2BAB5 10
  11. H íng dÉn B¹n cÇn dïng thªm hµm Str(I,S)®Ó ®æi sè I sang chuçi} var s,s1,tam:string;{X©u s,s1,tam} ch:char;{ch kiÓu kÝ tù} i,j,solan:byte;{i,j,solan kiÓu byte} begin write('S = ');readln(s);{§äc S} s1:='';{G¸n s1 b»ng rçng} ch:=s[1];{G¸n ch b»ng s[1]} i:=1;{G¸n i b»ng 1} while ichiÒu dµi S} if j-i>1 then{NÕu j-i>1 th×} begin str(j- i,tam);{§æi j-i sang chuçi tam} s1:=s1+tam;{Céng tam vµo sau s1} end; i:=j;{G¸n i=j} if ch='A' then ch:='B' else ch:='A';{G¸n ch b»ng kÝ tù ngîc l¹i} end; writeln(s1);{XuÊt s1} readln; end. Bµi 11:{ NhËp N. Sau ®ã nhËp N tªn ngêi (hä tªn) a. §æi chuçi thµnh c¸c ch÷ c¸i hoa. Sau ®ã ®¶o tªn ngêi lªn ®Çu. In ra mµn h×nh c¸c chuçi sau khi ®¶o. b. S¾p xÕp tªn ngêi theo tªn, nÕu cïng tªn th× xÕp theo hä VD : VU NAM HO NAM TRAN ANH In ra : NAM VU Sau ®ã : TRAN ANH 11
  12. NAM HO HO NAM ANH TRAN VU NAM H íng dÉn a. CÇn x©y dùng thñ tôc dao(s)®Ó ®¶o tªn b. Dùa vµo c©u a chØ, vµ viÕt thªm thñ tôc tØa c¸c dÊu c¸ch (bµi 1). Sau ®ã ta so s¸nh chuçi nh b×nh th êng. Sau khi so s¸nh vµ ®æi chç ta l¹i ®¶o tªn ra cuèi} uses crt; var s:array[1..20]of string;{M¶ng s gåm 20 x©u} i,j,n:byte;{i,j,n kiÓu byte} tg:string;{X©u tg} procedure tia(var s:string); var i:byte;{Khai b¸o i kiÓu byte} begin while(s[1]=' ')and(s'')do delete(s,1,1);{Xo¸ c¸c kÝ tù tr¾ng ®Çu S} while(s[length(s)]=' ')and(s'')do delete(s,length(s),1);{Xo¸ c¸c kÝ tù tr¾ng cuèi S} i:=1;{G¸n i b»ng 1} while i
  13. begin clrscr;{Xo¸ mµn h×nh} write('N = ');readln(n);{§äc N} for i:=1 to n do begin write('S [',i,'] = ');readln(S[i]);{§äc S[i]} tia(s[i]); for j:=1 to length(s[i])do s[i,j]:=upcase(s[i,j]);{§æi s[i] thµnh ch÷ hoa} dao(s[i]); end; writeln('Sau khi dao'); for i:=1 to n do writeln(s[i]);{XuÊt N x©u} for i:=1 to n-1 do{Cho i ch¹y tõ 1 ®Õn n-1} for j:=i+1 to n do{Cho i ch¹y tõ i+1 ®Õn n} if s[i]>s[j]then{NÕu s[i]>s[j] th×} begin tg:=s[i];s[i]:=s[j];s[j]:=tg;{§æi chç s[i],s[j]} end; writeln('Sau khi sap xep'); for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn n} begin daolai(s[i]); writeln(s[i]);{XuÊt s[i]} end; readln; end. Bµi 12:{ NhËp 2 sè nguyªn d¬ng A,B (cã thÓ lªn ®Õn 200 ch÷ sè). TÝnh tæng 2 sè ®ã H íng dÉn V× A,B qu¸ lín nªn ta ph¶i dïng x©u ®Ó lu råi sau ®ã ph¶i viÕt thñ tôc céng 2 chuçi} uses crt; var a,b:string;{a,b kiÓu string} function cong(a,b:string):string; var tong:string;{tong kiÓu string} la,lb:byte;{la,lb kiÓu byte} i,c,nho:byte;{i,c,nho kiÓu byte} 13
  14. begin la:=length(a);lb:=length(b);{G¸n la,lb b»ng ®é dµi A,B} if la9 th×} begin nho:=1;{G¸n nho b»ng 1} c:=c-10;{Gi¶m c ®i 10} end else nho:=0;{NGîc l¹i g¸n nho b»ng 0} tong:=chr(c+48)+tong;{Thªm kÝ tù c vµo tr íc tong} end; if nho=1 then tong:='1'+tong;{NÕu nho=1 th× thªm '1' vµo ®Çu tong} cong:=tong;{G¸n cong b»ng tong} end; begin clrscr;{Xo¸ mµn h×nh} write('So A : ');readln(a);{NhËp x©u A} write('So B : ');readln(b);{NhËp x©u B} writeln(cong(a,b)); readln; end. 14
  15. 15
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2