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]
Trang 1Gi¸o ¸n ®iÖn tö tin häc líp 11
Trang 2Câu hỏi kiểm tra bài cũ :
- Em hãy nêu khái niệm xâu?
- Khai báo biến S có kiểu xâu độ dài tối đa
100?
- Cho ví dụ 1 xâu đối xứng?
( Xâu đối xứng là xâu đọc từ trái sang phải thu được kết quả giống như đọc từ phải sang trái) Trả lời:
Xâu là dãy các kí tự trong bộ mã ASCII
Var S:string[100];
Ví dụ:
S:= ‘ABCDCBA’;
Trang 3A
Giải Thích: ABCDCBA
Xâu đối xứng cĩ tính chất ?
Đọc nĩ từ trái sang phải thu được kết quả
giống như đọc từ phải sang trái (cịn được gọi
là xâu Palindrome ).
C
A
Trang 4Bài 1 :
Nhập vào 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 ?
BÀI TẬP VÀ THỰC HÀNH 5
Input: Nhập vào xâu.
Output: Xuất ra kết quả cĩ phải là xâu đối xứng ( Palindrome )
VD: S:=‘ABCDCBA ’;
S1:=‘ABCACD’;
Xâu đối xứng Xâu khơng đối xứng
Trang 5CHƯƠNG TRÌNH
Khai báo biến p kiểu xâu.
Tạo xâu mới ( p ) bằng cách
đảo ngược xâu ban đầu ( a ).
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.
Ý TƯỞNG
+ Xác định độ dài xâu a
+ Khởi tạo : p ’’;
+ Duyệt từ cuối xâu a về đầu
xâu a , tại mỗi lần duyệt i xâu
p được ghép thêm kí tự a[i].
Trang 6• Chạy thử chương trình bằng bộ input
ABCDCBA
Kết quả : xau la palindrome
• Chạy thử chương trình bằng bộ input
ABCDABC
Kết quả : xau khong la palindrome
• Hãy cho 1 vài bộ input chạy thử chương trình và nhận xét kết quả
Trang 7BÀI TẬP VÀ THỰC HÀNH 5
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’
Các cặp kí tự ở vị trí đối xứng nhau là:
- Kí tự a[1] đối xứng với kí tự a[8]
- Kí tự a[2] đối xứng với kí tự a[7]
- 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]
Đưa ra nhận xét gì về các cặp kí tự đối xứng trong xâu?
Mọi cặp kí tự
ở vị trí đối xứng nhau đều giống nhau
Trang 8Xây dựng thuật toán
- 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ự trong xâu đó?
X 2
Phát hiện bao nhiêu cặp kí tự
ở vị trí đối xứng nhau nhưng khác nhau thì kết luận xâu đó
không là palindrome? Chỉ cần 1
Kí tự a[i] đối xứng với kí tự a[x-i+1]
div x:=length(a);
Các cặp kí tự ở vị trí đối xứng nhau:
Trang 9Nhậ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ấu sự phát hiện này bằng 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
Đoạn chương trình
Trang 10CHƯƠNG TRÌNH HOÀN CHỈNH
Trang 11• Chạy thử chương trình bằng bộ input
• Chạy thử chương trình bằng bộ input
• Hãy cho 1 vài bộ input chạy thử chương trình và nhận xét kết quả