Đề 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'.
Output: 'em yeu em nhu em yeu 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.
bạn ơi mình chưa hiểu chỗ while pos('anh',s) <>0 là gì bạn ơi
ReplyDeleteHà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