Bài tập 1:Đề: Viết chương trình nhập vào một xâu rồi in ra màn hình xâu đảo của một xâu đó.. Bài tập 2:Đề: Viết chương trình nhập vào một xâu.. In ra màn hình xâu đó sau khi đã đổi tất c
Trang 1Bµi tËp x©u
Cã bao nhiªu thao t¸c xö lÝ x©u?
1 PhÐp ghÐp x©u:
2 PhÐp to¸n so s¸nh: <, <=, =, >=, >, <>
3 C¸c hµm, th t c xö: ủ ụ
a Th t c Delete(St, vt, n): ủ ụ
b Th t c Insert(St1, St2, vt): ủ ụ
c Hµm Copy(St, vt, n):
d Hµm Length(St):
e Hµm Pos(St1, St2):
f Hµm Upcase(Ch):
Trang 2Bài tập 1:
Đề: Viết chương trình nhập vào một xâu rồi in ra màn hình xâu đảo của một xâu đó.
Bµi tËp x©u
Trang 3Minh hoạ (1)
Var St:String;
i:Byte;
0 1 2 3 4 … 255 St
Write(‘Nhap vao mot xau: ’);
Readln(St);
i
a b c d
4
For i:=length(St) downto 1 do Write(St[i]);
Nhap vao mot xau:
4
d c b a
321
Màn hình
Trang 4Ch ươ ng tr×nh:
Program xau_dao;
Var St:String;
i:Byte;
Begin
For i:=length(St) downto 1 do
Write(St[i]);
Readln;
End.
Bµi tËp x©u
Trang 5Bài tập (2):
Đề: Viết chương trình nhập vào một xâu In ra màn hình xâu đó sau khi đã đổi tất cả chữ in
thường thành in hoa.
Minh hoạ
Trang 6Minh hoạ (2)
Var St:String[10];
i:Byte;
0 1 2 3 4 … 10 St
i
Write(‘Nhap vao mot xau: ’);
Readln(St);
Nhap vao mot xau:
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Màn hình
Xau sau khi da in hoa la:
1
X A U
X a u
Writeln(‘Xau sau khi da in hoa la:’, St);
2
A U X
Trang 7Bµi tËp x©u
Ch ươ ng tr×nh:
Program in_hoa;
Var St:String[10]; i:Byte;
Begin Write(‘Nhap vao mot xau: ’); Readln(St);
For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Writeln(‘Xau sau khi da in hoa la:’, St);
Readln;
End.
Trang 8Bài tập (3):
Đề: Viết chương trình nhập vào một xâu bất
kỳ rồi in ra màn hình số từ của xâu đó.
Hướng dẫn:
Từ là một dãy ký tự liên tục khác ký tự trắng (ký tự trắng là ký tự phân cách giữa các từ).
Do đó ta có đoạn giải thuật thô như sau:
Sotu:=0;
For i:=1 to length(st) do
if st[i]=‘ ’ then inc(sotu);
Giải thuật trên chỉ đúng với trường hợp nhập xâu đúng qui cách (Xâu không có ký tự trắng dư thừa)
Trang 9Minh hoạ (3)
Var St:String; N,i:Byte;
St
i N
0
Write(‘Nhap vao mot xau: ’);
Readln(St); Nhap vao mot xau:
Màn hình
0 1 2 3 4 5 6 7 8 9 10 … 255
9
0
n:=0; St:=St+‘ ’;
For i:=1 to length(St) do
if St[i] = ‘ ‘ then N:=N+1;
Writeln(‘So tu cua xau la: ’,N);
Xau ky tu
So tu cua xau la: 3
10
1 10 34 8 12
23
1 2 3 4 5 6 7 8 9 10
Trang 10Bài tập (3):
Chương trình:
Program So_tu;
Var St:String;
N,i:Byte;
Begin Write(‘Nhap vao mot xau: ’); Readln(St);
n:=0; St:=St+‘ ’;
For i:=1 to length(St) do
if St[i] = ‘ ‘ then N:=N+1;
Writeln(‘So tu cua xau la: ’,N);
Readln;
End.
Trang 11Bài tập (4):
Đề: Nhập một xâu kí tự gồm các từ,chẳng hạn:st=‘Thu Do Ha Noi’.In ra màn hình xâu đó sao cho các từ chỉ cách nhau đúng một kí tự trống.
Minh hoạ
Trang 12Thủ tục DELETE(St, vt, n):
Xoá n ký tự từ xâu St bắt đầu từ vị trí vt.
Ví dụ:
St = ‘tinhocnhatruong’
Delete(St, 7,9) => St = ‘tinhoc’
Minh hoạ:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
t i n h o c n h a t r u o n g
9
15
15 6
0 1 2 3 4 5 6
7
KiÕn thøc
bµi cò
KiÕn thøc bµi cò
Trang 13Bài tập (3):
Chương trình:
Program So_tu;
Var St:String;
i:Byte;
Begin Write(‘Nhap vao mot xau: ’); Readln(St);
While st[1]=‘ ‘ do delete(st,1,1);
While st[length(st)]=‘ ‘ do delete(st,length(st),1); repeat
if (st[i]= ‘ ‘) and (st[i+1]=‘ ‘) then delete(st,i,1)
else i= i+1;
until i> length(st);
write(‘Cau chuan la:’,st); Readln;