Nhận xét Giả sử xâu là đối xứng palin:=true - Lần lượt so sánh cặp ở vị trí đối xứng nhau.Thực hiện x div 2 lần so sánh cặp kí tự -Nếu phát hiện ở lần thứ i mà a[i] a[x-i+1] thì đánh d[r]
(1)Gi¸o ¸n ®iÖn tö tin häc líp 11 (2) Caâu hoûi kieåm tra baøi cuõ: - Em haõy neâu khaùi nieäm xaâu? - Khai báo biến S có kiểu xâu độ dài tối đa 100? - Cho ví dụ xâu đối xứng? (Xâu đối xứng là xâu đọc từ trái sang phải thu đượ kếi:t giống đọc từ phải sang trái) Trảc lờ Xâu là dãy các kí tự mã ASCII Var S:string[100]; Ví dụ: S:= ‘ABCDCBA’; (3) Giaûi Thích: ABCDCBA A B C D C B A A B C D C B A Xâu đối xứng có tính chất ? Đọc nó từ trái sang phải thu kết giống đọc từ phải sang trái (còn gọi là xâu Palindrome) (4) BAØI TẬP VAØ THỰC HAØNH Bài : Nhập vào từ bàn phím xâu Kiểm tra xâu đó có phải là xâu đối xứng hay không ? Input: Nhập vào xâu Output: Xuất kết có phải là xâu đối xứng (Palindrome) VD: S:=‘ABCDCBA’; Xâu đối xứng S1:=‘ABCACD’; Xâu không đối xứng (5) Ý TƯỞNG Tạo xâu (p) cách đảo ngược xâu ban đầu (a) Khai báo biến p kiểu xâu + Xác định độ dài xâu a + Khởi tạo : p ’’; + Duyệt từ cuối xâu a đầu xâu a, lần duyệt i xâu p ghép thêm kí tự a[i] Nếu xâu a = p thì thông báo xâu là palindrome, ngược lại thông báo xâu không là palindrome CHƯƠNG TRÌNH (6) • Chạy thử chương trình input ABCDCBA Kết quả: xau la palindrome • Chạy thử chương trình input ABCDABC Kết quả: xau khong la palindrome • Hãy cho vài input chạy thử chương trình và nhận xét kết (7) BAØI TẬP VAØ THỰC HAØNH b) Hãy viết lại chương trình trên: Trong đó không dùng biến xâu p Ví dụ: Xét xâu đối xứng: Xâu a = ‘ABCDDCBA’ a[i] A B C D D C B A i Đưa nhận xét gì các cặp kí tự đối xứng xâu? Các cặp kí tự vị trí đối xứng là: Mọi cặp kí tự - Kí tự a[1] đối xứng với kí tự a[8] vị trí đối xứng - Kí tự a[2] đối xứng với kí tự a[7] giống - Kí tự a[3] đối xứng với kí tự a[6] - Kí tự a[4] đối xứng với kí tự a[5] (8) Xây dựng thuật toán a[i] A B C D D C B A i x:=length(a); Các cặp kí tự vị trí đối xứng nhau: - a[1] đối xứng với a[x] - a[2] đối xứng với a[x-1] - a[3] đối xứng với a[x-2] - a[4] đối xứng với a[x-3] Để kiểm tra xâu đối xứng ta so sánh bao nhiêu cặp kí tự xâu đó? Kí tự a[i] đối xứng với kí tự a[x-i+1] Phát bao nhiêu cặp kí tự vị trí đối xứng khác thì kết luận xâu đó không là palindrome? X div Chỉ cần (9) Đoạn chương trình Nhận xét Giả sử xâu là đối xứng (palin:=true ) - Lần lượt so sánh cặp vị trí đối xứng nhau.Thực (x div 2) lần so sánh cặp kí tự -Nếu phát lần thứ i mà a[i] <> a[x-i+1] thì đánh dấu phát này cách thay đổi biến logic (palin:=false) Nếu palin=true thì xâu là palindrome nguợc lại xâu không là palindrome (10) CHƯƠNG TRÌNH HOÀN CHỈNH (11) • Chạy thử chương trình input a=‘ABCDCBA’ Kết quả: xau la palindrome • Chạy thử chương trình input a=‘ABCDABC’ Kết quả: xau khong la palindrome • Hãy cho vài input chạy thử chương trình và nhận xét kết (12) (13)