Tóm tắt lý thuyết 1. Mục đích, yêu cầu Làm quen với việc tìm kiếm, thay thế và biến đổi xâu. 2. Nội dung Bài 1: Nhập từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng hay không? Gợi ý làm bài: Xâu đối xứng có tính chất: Đọc nó từ trái sang phải cũng thu được kết quả giống như đọc từ phải sang trái (còn được gọi là xâu Palindrome). Xác định bài toán: Input: Nhập vào xâu. Output: Xuất ra kết quả có phải là xâu đối xứng? Mô tả thuật toán: Bước 1: Nhập Xâu S; Bước 2: Tính chiều dài xâu S; Bước 3: Tạo xâu P (xâu rỗng); Bước 4: Với I = length(S) à 1 thì P:=P+S; [*]Bước 5: Nếu S=P thì S là xâu đối xứng, ngược lại thì không phải là xâu đối xứng. [*]Cài đặt chương trình: PHP: var i, x: byte; a, p: string; BEGIN write(‘Nhap vao xau:’); readln(a); x:= length(a); p:= ' '; for i:=x downto 1 do p:= p+a[i]; if a=p then write(‘Xau la Palindrome’) else write(‘Xau khong la Palindrome’); readln; END. Viết lại chương trình trên trong đó không dùng biến xâu p: PHP: Uses crt; Var s: string; x,i: byte; palin: Boolean; Begin Clrscr; Write(' Nhap xau s='); readln(s); x:=length(s); palin:=true; For i:=1 to (x div 2) do begin If s[i]<> s[x-i+1] then palin:=false; break; end; If palin then write('doi xung') else write('khong doi xung'); readln; End. Bài 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S (không phân biệt chữ hoa hay chữ thường ). Gợi ý làm bài: Xác định bài toán: Input: Nhập vào xâu Output: Xuất ra số lần xuất hiện của các chữ cái tiếng Anh trong xâu vừa nhập. Mô tả thuật toán: Bước 1: Nhập vào xâu S. Bước 2: Tạo mảng A lưu trữ số lần xuất hiện của chữ cái tiếng Anh. Bước 3: Khởi tạo cho từng phần tử mảng. Bước 4: Nếu trong xâu S chữ cái A \(\rightarrow\) Z thì tăng giá trị của phần tử trong mảng. Bước 5: Xuất ra mảng vừa tạo. Cài đặt chương trình: PHP: Program bai02; Uses crt; Var a: array['A'.. 'Z'] of byte; s: string; i: byte; c: char; Begin clrscr; write('nhap xau :'); readln(s); for c:='A' to 'Z' do a[c]:=0; for i:=1 to length(s) do begin s[i]:=upcase(s[i]); if (s[i]>='A') and (s[i]<='Z') then a[s[i]]:=a[s[i]]+1; end; for c:='A' to 'Z' do if a[c]<>0 then writeln( 'So lan xuat hien', c,': ',a[c]); readln; End. Bài 3: Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự 'anh' bằng cụm kí tự 'em'. Gợi ý làm bài: Xác định bài toán: Input: Nhập vào một xâu. Output: Xuất ra xâu kết quả đã thay thế cụm từ ‘anh’ bằng cụm từ 'em'. Mô tả thuật toán: Bước 1: Tìm vị trí bắt đầu của xâu 'anh'; Bước 2: Xóa xâu 'anh' vừa tìm thấy; Bước 3: Chèn xâu 'em' vào xâu S tại vị trí trước đây xuất hiện xâu 'anh' (lặp lại các bước trên cho đến khi không còn xâu 'anh'); Bước 4: In ra xâu S. Cài đặt chương trình: PHP: Uses crt; Var s: string; i: byte; Begin Clrscr; Write('Nhap xau S:'); Readln(s); i:=Pos('anh',s); While i<> 0 do Begin Delete(s,i,3); Insert('em',s,i); I:=Pos('anh',s); End; writeln(S); readln; End.