Tải bản đầy đủ (.ppt) (19 trang)

Tiết 34 bài tập và thực hành 5

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (240.84 KB, 19 trang )


Tiết 34. BÀI TẬP VÀ THỰC HÀNH 5
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 ?
 Input: Nhập vào xâu.
 Output: Xuất ra kết quả có phải là xâu đối xứng


Tiết 34. BÀI TẬP VÀ THỰC HÀNH 5
Bài 1 :

1

Ví dụ:
S:= ‘I was saw I’
2

I
11

I

3

4

5

6


9

8

7

w a s

8

9

10

6

5

4

3

s a w

11

I

s a w


w a s
10

7

2

1

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).


Tiết 34. BÀI TẬP VÀ THỰC HÀNH 5
Bài 1 :

THUẬT TOÁN
Bước 1: Nhập Xâu a
Bước 2: Tính chiều dài xâu a
Bước 3: Tạo xâu P (xâu rỗng)
Bước 4: Với I = length(a)  1 thì
P:=P+a[i].
Bước 5: Nếu a=P thì a là xâu đối xứng, ngược lại
thì không phải là xâu đối xứng



Tiết 34. BÀI TẬP VÀ THỰC HÀNH 5
var

i, x: byte;
a, p: string;
BEGIN
write(‘Nhap vao xau:’);
readln(a);
x:= length(a);
{xac dinh do dai cua xau}
p:= ‘’;
{khoi tao xau rong}
for i:=x downto 1 do
p:= p+a[i];
{tạo xau dao nguoc}
if a=p then
write(‘Xau la Palindrome’)
else
write(‘Xau khong la Palindrome’);
readln;
END.


Tiết 34. BÀI TẬP VÀ THỰC HÀNH 5
Bài 1 :
b) Hãy viết lại chương trình trên,trong đó không dùng biến
xâu p
1

I


2

3

4

5

w a s

6

7

8

9

s a w

10

11

I

- So sánh các kí tự ở vị trí 111, 210,… nếu có kí tự
khác nhau thì không phải là xâu đối xứng. Bởi vậy dùng
biến Logic để ghi nhận sự phát hiện này.

- Chúng ta sẽ có bao nhiêu lần xét?
Chúng ta sẽ có n div 2 lần xét


Program bai1_b;
Uses crt;
Var s: string;
x,i: byte;
KT: Boolean;
Begin
Clrscr;
Write(' Nhap xau s='); readln(s);
x:=length(s); KT:=true;
For i:=1 to (x div 2) do
begin
If s[i]<> s[x-i+1] then KT:=false;
end;
If KT then write('doi xung') else write('khong doi xung');
readln;
End.


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5


Tiết 35.BÀI TẬP VÀ THỰC HÀNH 5
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 )

- 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.


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5
Chúng ta sẽ có bao nhiêu chữ cái trong tiếng Anh?
Từ chữ cái A  Z (26 chữ cái) ;

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 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.


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5
Bài 2:
Cho xâu S:

1

2

3

4


5

6

H

O

T

H

II

K
K

7

YY

Tạo mảng A: Ghi nhận số lần xuất hiện của các kí tự trong
xâu S
A


A 0




H

I

J

K



O



T

...

Z

2

1

00

11





11




11




00

Var A: array[‘A’..
số‘Z’
đầu>..<chỉ số cuối>] of byte;
A[‘H’]=2 có nghĩa là có 2 kí tự ‘H’ trong xâu S.


2


Program bai02;
Uses crt;
Var a: array['A'.. 'Z'] of byte;
s: …;
i: …;
c: …;

Begin
clrscr;
write('nhap xau :');readln(s);
for c:='A' to 'Z' do a[c]:=0;
for i:=1 to length(s) do
begin
………….
end;

for c:='A' to 'Z' do
if a[c]<>0 then writeln( 'So
lan xuat hien', c,': ',a[c]);
readln;
End.


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.


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5
Các thao tác xử lí xâu
1.Thủ tục delete(St, vt, n);
2.Thủ tục insert(St1, St2, vt);
3.Hàm length(St);
4.Hàm Pos(St1, St2);


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5
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’.
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’


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5

Bài 3:

Ví dụ: S:= ‘anh yeu truong anh’
 ‘em yeu truong em’

1 …
a n

..
h

y e u

t

r

u o n g

16 17 18
a n h

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
1 …

e m


.. 15 16

y e u

t r u o n g

e m


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.


Tiết 35. BÀI TẬP VÀ THỰC HÀNH 5
Những kiến thức cần nắm :

 Cách tạo một xâu mới từ xâu ban đầu.
 Đếm số lần xuất hiện của một chữ cái trong toàn
bộ văn bản.
 Tìm kiếm và thay thế một từ bằng một từ khác
trong toàn bộ văn bản.

Những kiến thức cần chuẩn bị:
 Kiến thức về kiểu dữ liệu có cấu trúc.
 Câu hỏi và bài tập trang 79 (SGK).



×