Xâu kí tự trong Pascal

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ự 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 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 . P A 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.

doc11 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 3829 | Lượt tải: 4download
Bạn đang xem nội dung tài liệu Xâu kí tự trong Pascal, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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ù 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 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 . P A 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 '; III. 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; 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) 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} 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<length(s)do{Trong khi i < chiÒu dµi cña S} begin if(s[i]=' ')and(s[i+1]=' ')then delete(s,i,1){NÕu s[i]lµ ' ' vµ s[i+1]còng lµ ' ' th×} else inc(i);{Ng­îc l¹i t¨ng i} end; writeln('Sau khi doi : ',s);{XuÊt s} readln; end. Bµi 2: { NhËp chuçi kÝ tù, xem chuçi ®ã cã ®èi xøng nhau kh«ng VD : "ABBA" lµ ®èi xøng "RADAr" lµ ®èi xøng "AFF" lµ kh«ng ®èi xøng H­íng dÉn i:=1;j:=length(s); while(upcase(s[i])=upcase(s[j]))and(i<=j)do begin inc(i);dec(j); end; NÕu i>j th× chuçi ®èi xøng, ng­îc l¹i th× kh«ng ®èi xøng} uses crt; var s:string;{X©u S} i,j:byte;{i,j kiÓu byte} begin clrscr;{Xo¸ mµn h×nh} write('S = ');readln(s);{§äc S} i:=1;j:=length(s);{G¸n i b»ng 1 vµ j b»ng chiÒu dµi s} while(upcase(s[i])=upcase(s[j]))and(i<=j)do{Trong khi s[i]=s[j] vµ i<=k th×} begin inc(i);dec(j);{T¨ng i. Gi¶m j} end; if i>j then write('Xau doi xung')else write('Xau khong doi xung');{XuÊt kÕt qu¶} readln; 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]<='Z')then s[i]:=chr(ord(s[i])+32);{NÕu s[i] trong kho¶ng 'A'..'Z' th× ®æi s[i]thµnh 'a'..'z'} writeln(s);{XuÊt S} s[1]:=upcase(s[1]);{§æi s[1]thµnh kÝ tù hoa} for i:=2 to length(s)do{Cho i ch¹y tõ 2 ®Õn ®é dµi S} if(s[i-1]=' ')then s[i]:=upcase(s[i]);{NÕu s[i-1]lµ ' ' th× ®æi s[i]thµnh kÝ tù hoa} writeln(s);{XuÊt S} readln; end. Bµi 4: { NhËp mét chuçi kÝ tù. §Õm xem trong chuçi cã bao nhiªu tõ Quy ­íc mçi tõ viÕt c¸ch nhau mét dÊu c¸ch VD : PHAM HUU NGON Cã 3 tõ H­íng dÉn Thªm kÝ tù tr¾ng vµo ®Çu S 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 ®Ó l­u 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; 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); 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; 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 x<0 then{NÕu x<0 th×} begin gotoxy(1,y);{Di chuyÓn tíi (1,y)} write(copy(s,1-x,79)); end else begin if x>0 then gotoxy(x,y)else gotoxy(1,y);{NÕu x>0 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); 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 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 i<=length(s) do{Trong khi i<=length(s)} begin j:=i;{g¸n j b»ng i} s1:=s1+ch;{Céng ch vµo sau s1} repeat inc(j)until(s[j]ch)or(j>length(s));{T¨ng j cho ®Õn khi ®æi kÝ tù hoÆc j>chiÒ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 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<length(s)do{Trong khi i<length(s) th×} begin if(s[i]=' ')and(s[i+1]=' ')then delete(s,i,1){NÕu s[i]=' ' vµ s[i+1]=' ' th× xo¸ kÝ tù thø i} else inc(i);{Ng­îc l¹i t¨ng i} end; end; procedure dao(var s:string); var i:byte;{Khai b¸o i kiÓu byte} begin for i:=length(s)downto 1 do{Cho i ch¹y tõ length(s) xuèng 1} if s[i]=' ' then break;{NÕu s[i] lµ kÝ tù rçng th× ngõng} s:=copy(s,i+1,255)+' '+copy(s,1,i-1); end; procedure daolai(var s:string); var i:byte; begin for i:=1 to length(s)do{Cho i ch¹y tõ 1 ®Õn length(s)} if s[i]=' ' then break;{NÕu s[i] lµ kÝ tù rçng th× ngõng} s:=copy(s,i+1,255)+' '+copy(s,1,i-1); end; 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 ®Ó l­u 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} begin la:=length(a);lb:=length(b);{G¸n la,lb b»ng ®é dµi A,B} if la<lb then{NÕu la<lb th×} for i:=1 to lb-la do a:='0'+a{§iÒn lb-la kÝ tù '0' vµ tr­íc A} else for i:=1 to la-lb do b:='0'+b;{Ng­îc l¹i ®iÒn la-lb kÝ tù '0' vµ tr­íc B} tong:='';{G¸n tong b»ng x©u rçng} nho:=0;{G¸n nho b»ng 0} for i:=length(a) downto 1do{Cho i ch¹y tõ ®é dµi A xuèng 1} begin c:=ord(a[i])+ord(b[i])-96+nho; if c>9 then{NÕu c>9 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.

Các file đính kèm theo tài liệu này:

  • docXâu kí tự trong Pascal.doc
Tài liệu liên quan