BAØI TẬP CHƯƠNG 5: XÂU KÝ TỰ

Một phần của tài liệu Bài tập Pascal có lời giải (Trang 28)

Bài 1 :

Lập trình đếm số lần xuất hiện ở mỗi loại kí tự thuộc bảng chữ cái tiếng Anh trong một xâu kí tự Str .

Var A: array [ 'A'..'Z'] of integer; S: string;

ch: char; i: integer; BEGIN

Write(' Cho mot xau ki tu : '); Readln(s); For ch:= 'A' to 'Z' do A[ch]:=0;

For i:=1 to length(s) do Begin

If Upcase(S[i]) in (['A'..'Z']) then Begin S[i]:= Upcase(S[i]); A[S[i]]:= A[S[i]]+1; End; End; For ch:= 'A' to 'Z' do

Writeln('So lan xuat hien cua ',ch,' trong xau la: ', A[ch]:4) ; Readln ;

END .

Bài 2 :

Cho số tự nhiên n và xâu có độ dài n . Hãy biến đổi xâu đã cho bằng cách thay đổi trong đó :

a. a. Tất cả các dấu ! bằng dấu chấm .

b. b. Mỗi một nhóm các dấu chấm liền nhau bằng một dấu chấm .

c. c. Một nhóm các dấu chấm đứng liền nhau bằng dấu ba chấm .

a ) Var S: string; i: byte;

BEGIN

Write(' Cho mot xau ki tu S = '); Readln(S); For i:=1 to length(S) do

If S[i] = '!' then S[i]:= '.';

Write( ' Chuoi sau khi da bien doi la : ', S); Readln; END . b ) Uses crt; Var S : string; i : byte; BEGIN

Clrscr;

Write(' Cho mot xau ki tu S = '); Readln(S); i:=1;

While i< length(S) do

If (S[i]='.')and(S[i+1]='.') then Delete(S,i,1) Else inc(i);

Write('Chuoi sau khi da bien doi la: ' ,S); Readln; END . c ) Uses crt; Var S: string; i, j: byte; BEGIN Clrscr;

Write('Nhap xau S='); Readln(S); i:=1;

While i<=Length(S) do Begin

If S[i]='.' then Begin

j:=i;

While (S[i]='.')and(i<=length(S)) do inc(i); dec(i);

If (i-j)=1 then insert('.',S,i) Else If (i-j)>2 then Begin Delete(S,j+2,i-j-2); i:=j+1; End; End ; Inc(i); End;

Write('Chuoi sau khi bien doi la: ',S); Readln;

END .

Bài 3 :

Cho số tự nhiên n và một dãy các kí tự S1 , S2 , … , Sn . Hãy tìm số tự nhiên I đầu tiên sao cho các kí tự Si , Si+1 đều là chữ cái a . Nếu trong dãy không có những cặp như vậy thì thông báo .

Var S: string; i: integer;

BEGIN

Write(' Cho mot xau ki tu : '); Readln(S); i:= pos('aa', S); {tìm vị trí xâu con 'aa' trong S}

If i<>0 then Writeln(' Ton tai "aa" tai vi tri ', i) Else Writeln(' Khong ton tai .') ;

Readln; END .

Bài 4 :

Cho số tự nhiên n và dãy các kí tự S1 , S2 , … , Sn . Biết rằng trong dãy có ít nhất một dấu phẩy . Hãy tìm số tự nhiên i sao cho :

a. a. Si là dấu phẩy đầu tiên .

b. b. Si là dấu phầy cuối cùng .

a )

Var S: string; i: integer; BEGIN

Write('Cho mot xau S co dau ",": '); Readln(S); i:= pos(',', S); (* vị trí của dấu ',' trong S *) If i<> 0 then Write(' Vi tri thoa man la: ', i); Readln; END . b ) Var S: string; i: integer; BEGIN

Write('Cho mot xau S co dau ",": '); Readln(S); i:= length(S);

While (i>=1)and(S[i] <> ',' ) do i:=i -1; If i>=1 then Write('So thu tu thoa man la: ', i) Else Write('Khong ton tai.');

Readln; END .

Bài 5 :

Viết chương trình nhập một xâu kí tự , sau đó chỉ ra xem xâu đó có phải là xâu đối xứng không ( xâu đối xứng là xâu có các kí tự giống nhau và đối xứng nhau qua điểm giữa xâu , ví dụ ‘ABBA’ hoặc ‘ABCBA’ ) .

Uses Crt;

Var St : string; dx : Boolean;

Một phần của tài liệu Bài tập Pascal có lời giải (Trang 28)