Giải bài tập Turbo Pascal - Bài 3 trang 73

Đề bài: Nhập vào từ bàn phím một xâu. Thay thế tất cả cụm kí tự 'anh' bằng cụm kí tự 'em'.

TEXT

Input: 'anh yeu em nhu em yeu anh'
Output: 'em yeu em nhu em yeu em'

Ý tưởng

Chúng ta sẽ sử dụng hàm pos('anh',s) để tìm vị trí xuất hiện đầu tiên của cụm kí tự 'anh'. Sau đó ta sẽ thực hiện hai thao tác sau
  • Sử dụng hàm insert('em',s,pos('anh',s)+3) để chèn cụm kí tự 'em' vào sau cụm kí tự anh, các bạn lưu ý cho vị trí chèn cụm kí tự 'em' là pos('anh',s)+3 vì pos('anh',s) là vị trí xuất hiện của cụm 'anh' nên ta phải cộng thêm 3 thì cụm 'em' mới nằm sau cụm anh
  • Sử dụng hàm delete(s,pos('anh',s),3) để xóa cụm kí tự anh đó đi, lí do là ta phải xóa cụm 'anh' đi để chỉ còn một mình cụm 'em' và để tiếp tục thực hiện với các cụm 'anh' khác trong xâu.

Chương trình

Mình khuyên các bạn hãy đọc phần ý tưởng rồi tự làm, gặp khó khăn mới tham khảo bài giải dưới.
program thay_anh_thanh_em;
uses crt;
var s: string;
BEGIN
   clrscr;
   writeln(' hay nhap vao mot xau ');
   readln(s);
   while pos('anh',s) <> 0 do
      begin
         insert('em',s,pos('anh',s)+3);
         delete(s,pos('anh',s),3);
      end;
   writeln(' xau sau khi thay doi ''',s,'''');
   readln;
END.

Comments

  1. bạn ơi mình chưa hiểu chỗ while pos('anh',s) <>0 là gì bạn ơi

    ReplyDelete
    Replies
    1. Hàm pos('anh',s) sẽ trả về vị trí xuất hiện đầu tiên của từ anh trong xâu s, nếu không có từ anh nào trong xâu s hàm đó trả về giá trị 0. Câu lệnh trên có nghĩa là trong khi vẫn còn từ anh trong xâu s thì tiếp tục làm, làm cho tới khi không còn từ anh nào nữa thì thôi

      Delete

Post a Comment



» Vui lòng không spam vì nó sẽ bị xóa ngay sau đó.
» Nếu chèn code hãy mã hóa trước khi chèn vào nhận xét.
» Nếu thủ thuật Blog không áp dụng được thì hãy để lại URL blog để mình tiện kiểm tra.