Tin Học

Viết chương trình xóa ký tự trong xâu Pascal

You are viewing this post: Viết chương trình xóa ký tự trong xâu Pascal

Như vậy là mình đã viết xong một số bài toán cơ bản về mảng hai chiều, tiếp tục đến phần xâu kí tự, mở đầu sẽ là bài toán đơn giản “tìm và xóa ký tự trong xâu pascal” trong Pascal. Hãy theo dõi với anvuongvilla.com.vn bên dưới nhé.

Những bài toán về xử lí xâu kí tự hay văn bản là những bài toán hết sức thực tế, bởi các bạn có thấy không văn bản có mặt trong hầu hết các lĩnh vực, các chương trình tin học cũng vậy phải thường xuyên làm việc với danh sách, văn bản chính vì vậy mà mình rất coi trọng việc xử lí văn bản hay xâu kí tự khi dạy Pascal. Có một điều đáng tiếc là hầu như trong các đề thi HSG pascal lại thường không chú ý đến mảng này.

I. Video hướng dẫn xóa ký tự trắng trong xâu Pascal


II. Hướng dẫn xóa ký tự trong xâu Pascal


Bài toánViết chương trình xóa kí tự trắng thừa trong xâu (Giữa các từ có 2 dấu cách liên tiếp là thừa 1 dấu cách)

Dữ liệu vào file: del_32.INPmột dòng chứa xâu không quá 255 kí tự

Dữ liệu ra file: del_32.OUT là xâu khi đã xóa những kí tự thừa

VD:

del_32.int del_32.out
         Giua       cac tu      chi cach           nhau mot         khoang trang neu co hon 1 khoang         trang la co         khoang trang thua Giua cac tu chi cach nhau mot khoang trang neu co hon 1 khoang trang la co khoang trang thua

III. Ý tưởng xóa kí tự trắng thừa của một xâu trong Pascal


Mình giới thiệu với các bạn 2 hàm mà mình sử dụng trong thuật toán này:

  • delete(s,k,m): xóa m kí tự của xâu s tính từ vị trí k
  • Pos(s,st): Cho vị trí đầu tiên tìm thấy chuỗi s trong chuỗi st, cho kết quả 0 nếu không tìm thấy

Ý tưởng xóa kí tự trắng thừa của một xâu trong Pascal

Cách làm:

  • Xóa các kí tự trắng thừa ở đầu
  • Xóa các kí tự trắng thừa ở cuối
  • Tìm xem trong xâu có hai kí tự trắng liền nhau hay không (dùng hàm pos()) nếu có xóa bớt 1 kí tự

IV. Code xóa khoảng trắng thừa của một xâu trong Pascal


V. Tổng hợp thêm bài tập về xâu trong Pascal


Bài 1: Nhập xâu S1, tạo xâu S2 gồm tất cả các chữ số của xâu S1

Program Xau_chu_so;

Uses crt;

Var i: integer;

S1,S2: string;

Begin

Clrscr;

Write(‘Nhap xau ki tu S1: ‘); Readln(S1);

S2:=#32;

For i:=1 to length(S1) to

If S1[i] in [‘0’..’9’] then

S2:=S2+S1[i];

Writeln(‘Xau S2: ‘,S2);

End.

Bài 2: Nhập xâu S1, tạo xâu S2 gồm tất cả các chữ cái của xâu S1

Program Xau_chu_cai;

Uses crt;

Var i: integer;

S1,S2: string;

Begin

Clrscr;

Write(‘Nhap xau ki tu S1: ‘); Readln(S1);

S2:=#32;

For i:=1 to length(S1) to

If S1[i] in [‘A’..’Z’]+[‘a’..’z’] then

S2:=S2+S1[i];

Writeln(‘Xau S2: ‘,S2);

End.

Bài 3: Nhập xâu S. Tìm ra có bao nhiêu chữ cái, bào nhiêu chữ số.

Program Dem_chu_cai_so;

Uses crt;

Var I,dem_chu,dem_so: integer;

S: string;

Begin

Clrscr;

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

Dem_chu:=0; dem_so:=0;

For i:=1 to length(S) do

If S[i] in [‘A’..’Z’]+[‘a’..’z’] then

Dem_chu:=dem_chu+1 else

Dem_so:=dem_so+1;

            Writeln(‘Trong xau S co tat ca’,dem_chu,’chu cai’);

Writeln(‘Trong xau S co tat ca’,dem_so,’chu so’);

End.

Bài 4: Nhập vào xâu S1, chuyển đổi chữ hoa thành chữ thường

Program Chu_thuong;

Uses crt;

Var i:integer;

S: string;

Begin

Crlscr;

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

For i:=1 to length(S) do

If S[i] in [‘A’..’Z’] then

S[i]:=CHR(ORD(S[i])+32);

Writeln(S);

End.

Bài 5: Nhâp vào xâu S, chuyển đổi chữ thường thành chữ hoa

Program Chu_hoa;

Uses crt;

Var i: integer;

S: string;

Begin

Clrscr;

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

For i:=1 to length(S) do

If S[i] in [‘a’..’z’] then

S[i]:=Upcase(S[i]);

Writeln(S);

End.

Bài 6: Nhập vào xâu S. Chuyển kí tự đầu của mỗi từ trong xâu thành chữ hoa

Program Chuyen_ki_tu_dau;

Uses crt;

Var i: integer;

S: string;

Begin

Clrscr;

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

S[1]:=Upcase(S[1]);

For i:=1 to length(S) do

If S[i]=#32 then

S[i+1]:=Upcase(S[i+1]);

Writeln(S);

End.

 

Bài 7: Xóa hết khoảng trắng

Program Xoa_khoang_trang;

Uses crt;

Var i: integer;

S1,S2: string;

Begin

Clrscr;

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

S2:=#32;

For i:=1 to length(S) do

If S1[i]<>#32 then

S2:=S2+S1[i];

Writeln(S);

End.

Bài 8: Xóa hết kí tự thừa trong xâu

Program Xoa_ki_tu_thua;

Uses crt;

Var i: integer;

S: string;

Begin

Clrscr;

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

While S[1]=#32 do delete(S,1,1);

While S[length(S)]=#32 do delete(S,length(S),1);

While POS(#32#32,S)<>0 do delete(S,POS(#32#32,S),1);

Writeln(S);

End.

Bài 9: Xóa hết chữ số trong xâu

Program Xoa_chu_so;

Uses crt;

Var i: integer;

S: string;

Begin

Clrscr;

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

For i:=length(S) downto 1 do

If S[i] in [‘0’..’9’] then

Delete(S,i,1);

Writeln(‘Xau sau khi xoa: ‘,S);

End.

Bài 10: Xóa hết chữ cái có trong xâu

Program Xoa_chu_cai;

Uses crt;

Var i: integer;

S: string;

Begin

Clrscr;

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

For i:=length(S) downto 1 do

If S[i] in [‘a’..’z’]+[‘A’..’Z’] then

Delete(S,i,1);

Writeln(‘Xau sau khi xoa: ‘,S);

End.

Bài 11: Nhập vào xâu. In ra xâu đảo theo từ

Program Xau_dao_theo_tu;

Uses crt;

Var S: string;

x,y,z: integer;

Begin

Clrscr;

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

Y:=length(S);

For z:=length(S) downto 1 do

Begin

If ((S[y]=#32) and (y=1)) then

Begin

For x:=y to z do write(S[x]);

Z:=y;

End;

End;

End.

Bài 12: Đếm số lần xuất hiện của các kí tự trong xâu.

Program So_lan_xuat_hien;

Uses crt;

Var S: string;

dem: array[‘A’..’Z’] of integer;

i:integer;

ch: char;

Begin

Clrsccr;

Write(‘Nhap xâu S: ‘); Readln(S);

For ch:=’A’ to ‘Z’ do

Dem[ch]:=0;

For i:=1 to length(S) do

If upcase(S[i]) in [‘A’..’Z’] then

Inc(dem[upcase(S[i])]);

For ch:=’A’ to ‘Z’ do

If dem[ch]<>0 then

Writeln(ch,’  ‘,dem[ch]);

End.

Bài 14: In xâu S1 xuất hiện bao nhiêu lần trong xâu S2

Program S1_xuat_hien;

Uses crt;

Var i,dem: integer;

S1,S2: string;

Begin

Clrscr;

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

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

Dem:=0;

For i:=1 to length(S2) so

If S1=copy(S2,i,length(S1)) then

Dem:=dem+1;

Writeln(‘Chuoi S1 xuất hien’,dem,’lan trong xau S2’);

End.

Bài 15: Đếm số từ trong xâu

Program So_tu;

Uses crt;

Var i,dem: integer;

S: string;

Begin

Clrscr;

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

Dem:=0;

S:=S+’ ‘;

For i:=1 to length(S) do

If S[i]=#32 then dem:=dem+1;

Writeln(‘Trong xau co tat ca’,dem,’tu’);

End.

Bài 16: Xóa hết kí tự trùng nhau trong xâu

Program Xoa_ki_tu_trung;

Uses crt;

Var i,j,n: integer;

S: string;

Begin

Clrscr;

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

N:=length(S);

I:=1;

While i<n do

Begin

J:=i+1;

While j<=n do

Begin

If S[i]=S[j] then

Begin

Delete(S,j,1);

N:=n-1;

End

Else j:=j+1;

End;

I:=i+1;

End;

Writeln(‘Xau S moi: ‘,S);

End.

Bài 17:Nhập xâu St. Xóa một kí tự được nhập từ bàn phím.

Program Xoa_ki_tu;

Uses crt;

Var i: integer

K: char;

St: string;

Begin

Clrscr;

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

Write(‘Nhap ki tu k: ‘); Readln(k);

For i:=1 to length(S) do

If St[i]=k then delete(S,I,1);

Writeln(‘Xau sau khi xoa: ‘,S);

End.

Bài 18: Nhập xâu S. Nhập kí tự k. Đếm số lần xuất hiện của k

Program Ki_tu_k;

Uses crt;

Var i: integer;

K: char;

S: string;

Begin

Clrscr;

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

Dem:=0;

For i:=1 to length(S) do

If S[i]=k then dem:=dem+1;

Writeln(‘Ki tu k xuat hien’,dem,’lan’);

End.

Bài 19: Xâu đối xứng

Program Xau_doi_xung;

Uses crt;

Var S1,S2: string

I: integer;

Begin

Clrscr;

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

S2:=#32;

For i:=length(S) downto 1 do

S2:=S1[i];

If S1=S2 then

Writeln(‘Xau nay doi xuat’) else

Writeln(‘Xau nay khong doi xung’);

End.

Bài 20: Đếm xem trong xâu có bao nhiêu nguyen âm

Program Nguyen_am;

Uses crt;

Var dem,i: integer;

S: string;

Begin

Clrscr;

Write(‘Nhapxau S: ‘); Readln(S);

Dem:=0;

For i:=1 to length(S) do

If S[i] in [‘A’,’O’,’E’,’U’,’I’,’a’,’o’,’e’,’u’,’i’] then

Dem:=dem+1;

Writeln(‘Trong xau co tat ca: ‘,dem,’ nguyen am’);

End.


The article is compiled and aggregated from many sources by An Vượng Villa.

See more articles in the same category here: Tin Học

Review Queen

"Xin chào mọi người, tôi là Review Queen - một blogger chuyên viết đánh giá sản phẩm trong nhiều lĩnh vực khác nhau như thời trang, làm đẹp, công nghệ, gia dụng và nhiều hơn thế nữa. Với hơn 10 năm kinh nghiệm viết blog, tôi tự hào là một chuyên gia trong việc đánh giá và đưa ra những nhận xét chính xác về các sản phẩm, giúp độc giả có được những thông tin cần thiết trước khi quyết định mua hàng. Với tôi, việc đánh giá sản phẩm không chỉ là nghề nghiệp mà còn là niềm đam mê. Tôi luôn tìm kiếm những sản phẩm mới nhất và chất lượng nhất để có thể chia sẻ với độc giả của mình. Tôi tin rằng thông tin chính xác và trung thực sẽ giúp người đọc đưa ra được quyết định mua sắm thông minh hơn. Ngoài việc viết đánh giá sản phẩm, tôi cũng rất đam mê viết về các chủ đề khác như du lịch, ẩm thực, thủ thuật hay những kiến thức giáo dục. Tôi hy vọng các bài viết của mình sẽ giúp ích cho các bạn đọc trong cuộc sống hàng ngày. Cảm ơn các bạn đã quan tâm và ghé thăm blog của tôi. Hãy đón đọc các bài viết mới nhất từ Review Queen nhé!"

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button