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.
11 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 3842 | Lượt tải: 4
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).
Nhng 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 . 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, thc) 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 ®Ó 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;
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 ®Ó 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}
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:
- Xâu kí tự trong Pascal.doc