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án: Viế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.INP có mộ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
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