Tải bản đầy đủ - 24 (trang)
Các bài tập cơ bản xử lý xâu

Các bài tập cơ bản xử lý xâu

Tải bản đầy đủ - 24trang

Program xaunguoc;

Var



S, P: String[80];

i:Byte;



Begin

Write(‘Nhap xau S: ‘); Readln(S);

P:= ‘’;

For i:=length(S) downto 1 do P:=P+ S[i];

write(‘Xau dao nguoc la’, P);

Readln;

End.

Bài tập 3: Đếm số dấu cách trong xâu: Nhập vào một xâu bất kỳ từ bàn phím, có độ

dài không quá 255 ký tự, đếm và đưa ra màn hình số lượng dấu cách có trong xâu?

Ví dụ: St= ‘Quang xuong 4 Quang Xuong’



kết quả: 4



GV: Hỏi làm thế nào để đếm được số dấu cách có trong xâu? Có thể vận dụng cách xử

lý dạng mảng hay không?

HS: Suy nghĩ trả lời, dễ dàng nhận thấy có thể ứng dụng phương pháp duyệt và tham

chiếu đến các phần tử xâu để xử lý bài toán

Chương trình tham khảo

Program demdaucach;

Var



S: String;

i,d:Byte;



Begin

Write(‘Nhap xau S: ‘); Readln(S);

d:= 0;

For i:= 1 to length(S) do

If (s[i]= ‘ ’)



then d:=d+1;



write(‘so dau cach trong xau’, d);

Readln;

End.

Bài tập 4: Xóa dấu cách

Xâu St được gọi là xâu chuẩn hóa nếu phần đầu và cuối xâu không có dấu cách

thừa, khoảng cách giữa hai từ bất kỳ chỉ gồm 1 dấu cách.

Yêu cầu: Nhập vào một xâu st bất kỳ, hãy chuẩn hóa xâu vừa nhập và đưa kết

quả ra màn hình?

Ví dụ:



St= ‘



Viet



Nam







kết quả:



‘Viet Nam’



GV: Làm cách nào để tìm được kết quả?

HS: Sử dụng thủ tục delete



10



GV: Để loại bỏ các dấu cách thừa ở đầu và cuối xâu thực hiện như thế nào?

HS: Dễ dàng nhận thấy trong khi st[1] còn là dấu cách thì còn xóa, trong khi ký tự

cuối cùng của st còn là dấu cách thì còn xóa

GV: Đối với các đấu cách thừa ở các vị trí có nhiều hơn 1 dấu cách thì xử lý như thế

nào?

HS: Trong khi còn tồn tại hai dấu cách trở lên thì tiến hành xóa đi 1 dấu cách cho đến

khi không còn dấu cách thừa nào nữa thì hoàn thành.

GV: Đưa ra chương trình tham khảo

Program chuanhoa;

Var St: String;

Vt:byte;

Begin

Write(‘ nhap st=’);

Readln(st);

While (st[1]= ‘ ‘) do delete(st,1,1);



{xoa dau}



While (st[length(st)]= ‘ ‘) do delete(st,length(st),1); {xoa duoi}

Vt:=pos(‘ ‘,st);

While vt>0 do



{xoa giua}



Begin

Delete(st,vt,1);

Vt:=pos(‘ ‘,st);

End;

Writeln(‘xau chuan hoa la:’,St);

Readln;

End.

Bài tập 5: Viết chương trình cho máy tính kiểm tra mật khẩu. Mật khẩu là ‘tinhoc’.

Nếu vào đúng mật khẩu thì cho hiện dòng thông báo ‘Dang nhap thanh cong’. Nếu gõ

sai mật khẩu thì máy cho hiện dòng thông báo ‘Nhap lai password’.

GV: Các em thấy ở một số máy khi khởi động vào Windows thì máy tính yêu cầu

chúng ta phải gõ mật khẩu, hoặc khi chúng ta không làm việc với máy tính sau một

khoảng thời gian nhất định thì trên màn hình cũng xuất hiện cửa sổ yêu cầu người

dùng phải nhập password. Nếu nhập mật khẩu sai thì chúng ta không thể làm việc

cùng máy tính được nữa? Việc này để tăng cường tính năng bảo vệ máy tính, bảo mật

thông tin. Vậy chúng ta có thể làm được điều đó hay không? Bài tập này giúp các em

củng cố lại phần kiến thức về việc so sánh 2 xâu.

GV: Gợi ý học sinh viết chương trình

Chương trình:

Program ktmatkhau;

Uses crt;



11



Var s: string;

Begin

Clrscr;

repeat

Write(‘hay nhap password:’);



Readln(s);



Until s=’tinhoc’;

Write(‘ dang nhap thanh cong’);

Readln

End.

Đây là chương trình đơn giản so sánh xâu s nhập vào với xâu ‘tinhoc’ nhưng

khi thực hiện chương trình đã tạo được hiệu ứng tốt đối với học sinh, các em thấy rất

thú vị, thì ra lập trình cũng thật đơn giản. Giáo viên còn giới thiệu thêm được cấu trúc

lặp không biết trước số lần lặp repeat…until, và GV liên hệ với thực tế việc HS khi

truy cập các trang mạng xã hội hoặc sử dụng một số dịch vụ trên internet đều phải

đăng nhập.

Bài tập 6: Xâu con: Một xâu s1 được gọi là xâu con của xâu s2 nếu s1 là một phần

của xâu s2 (nói cách khác, s2 chứa xâu s1)

Nhập vào 2 xâu bất kỳ s1, s2 kiểm tra xem s1 có phải là xâu con của xâu s2 hay

không, nếu có ghi “dung”, nếu không ghi “sai” ra màn hình?

GV: với bài toán này ta đã thấy nó được ứng dụng ở đâu trong thực tế?

HS: đây là một trường hợp đơn giản của bài toán tìm kiếm, một ứng dụng được rất

nhiều người sử dụng của internet, trên máy tính, tra cứu khi đọc tài liệu...

GV: Để giải quyết bài này ta sử dụng thao tác nào trong số các thao tác với dữ liệu

xâu?

HS: Dễ dàng nhận thấy đây là một ứng dụng rất hay của thao tác Pos(s1,s2) trong xử

lý xâu.

Chương trình tham khảo:

Program xaucon;

Var



s1,s2:String;



Begin

Write(‘nhap xau s1=’); readln(s1);

Write(‘nhap xau s2=’); readn(s2);

If (pos(s1,s2)>0) then write(‘Dung’)



else



Write(‘Sai’);



Readln;

End.

Bài tập 7: Xâu đối xứng

Một xâu st được gọi là xâu đối xứng nếu nó bằng chính nó khi viết theo chiều

ngược lại.



12



Yêu cầu: lập trình nhập vào một xâu st bất kỳ, kiểm tra xem xâu đó có phải là xâu đối

xứng hay không?

Dễ nhận thấy với bài toán này, học sinh có thể vận dụng cách tạo xâu đảo ngược của

bài tập tạo xâu đảo ngược, đem kết quả thu được so sánh với xâu ban đầu, nếu hai

xâu bằng nhau thì kết luận xâu đối xứng, nếu không thì kết luận xâu không đối xứng.

Chương trình tham khảo

Program doixung;

Var St, S:String;

I:Byte;

Begin

Write(‘nhap vao xau st:’);

Readln(st);

S:=’’;

For i:=length(st) downto 1 do

S:=S+st[i];

If (st = s) then write(st,’ la xau doi xung’)

Else



write(st,’khong phai xau doi xung’);



Readln;

End.

2. Các bài tập nâng cao xử lý xâu

Từ các bài tập cơ bản ở phần một giáo viên cung cấp cho học sinh các bài tập

nâng cao phát triển trên chính các bài tập cơ bản

a) Biến đổi xâu

Việc biến đổi xâu được thực hiện trên mỗi ký tự trong xâu nên cần nắm rõ các

hàm, thủ tục trên kiểu dữ liệu xâu để vân dụng một cách linh hoạt vào từng bài tập cụ

thể.

Bài tập 1. Rút gọn xâu

Cho xâu St chỉ gồm các chữ cái in thường với độ dài tối đa 250 ký tự nhập từ

bàn phím. Hãy viết chương trình để tạo ra xâu S2 từ xâu S1 bằng cách xóa các ký tự

liên tiếp giống nhau trong xâu S1 và chỉ để lại một kí tự đại diện trong đoạn đó, đưa

kết quả ra màn mình.

Ví dụ:

St in



St out



TTTTTuuuuooongggLLLLaaaaiii



TuongLai



- Ý tưởng: Duyệt từ đầu đến cuối xâu, gặp hai ký tự liên tiếp khác nhau thì xóa đi một

ký tự.



13



- Chương trình Rút gọn xâu

Program rutgonxau;

Var St:String;

i: Byte;

begin

write(‘nhap vao xau st’);

readln(st);

i:=1;

while i
begin

if st[i]=st[i+1] then



delete(st,i,1)



else inc(i);

end;

writeln(‘ket qua la:’, St);

readln;

end.

b) Xâu con, xâu con đối xứng

Bài tập 1: Xâu con đối xứng

Cho một xâu S có độ dài không vượt quá 255 kí tự; đếm số lượng xâu con đối

xứng của S. (xâu chỉ gồm 1 ký tự cũng được gọi là xâu con đối xứng)

- ý tưởng: duyệt và tìm tất cả các xâu con của xâu S, mỗi xâu tìm được tiến

hành kiểm tra, nếu xâu đó đối xứng thì tăng giá trị biến đếm lên 1 đơn vị

Chương trình tham khảo (không sử dụng cách viết theo chương trình con vì học

sinh chưa học đến nội dung chương trình con)

Program

Var



demxaudoixung;



S, P,Q:string;

i,j,k,d:word;



begin

write(‘nhap xau S=’);

readln(s);

d:=0;

for i:=1 to length(s) do

for j:=1 to length(s)+1-i do

begin

p:=Copy(s,j,i);

Q:=’’;



14



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Các bài tập cơ bản xử lý xâu

Tải bản đầy đủ ngay(24 tr)

×
x