Bài tập và thực hành 5


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[i];

+ 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:

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:

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:

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:

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.

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[i];

+ 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:

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:

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:

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:

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.

Bài học bổ sung