Kiểm tra xâu con SubSt có nằm trong xâu St hay không? Nếu xâu SubSt nằm trong xâu St thì hàm trả về vị trí đầu tiên của xâu con SubSt trong xâu St, ngược lại hàm trả về giá trị 0.
4. Thủ tục DELETE(Var St:String; Pos, Num: Byte);
Xoá trong xâu St Num ký tự bắt đầu từ vị trí Pos.
5. Thủ tục INSERT(SubSt: String; Var St: String; Pos: Byte);
Chèn xâu SubSt vào xâu St bắt đầu tại vị trí Pos.
6. Thủ tục STR(Num; Var St:String);
Đổi số nguyên hay thực Num thành dạng xâu ký tự, kết quả lưu vào biến St.
7. Thủ tục VAL(St:String; Var Num; Var Code:Integer);
Đổi xâu số St thành số và gán kết quả lưu vào biến Num. Nếu việc chuyển đổi thành công thì biến Code có giá trị là 0, ngược lại biến Code có giá trị khác 0 (vị trí của lỗi).
Nhập 1 chuỗi, sau đó bỏ khoảng trắng ở đầu và cuối, khoảng trắng ở giữa 2 từ.
var s:string;
begin
readln(s);
while s[1]=#32 do delete(s,1,1);
while s[length(s)]=#32 do delete(s,length(s),1);
while pos(' ',s)<>0 do delete(s,pos(' ',s),1);
writeln(s);
readln;
end.
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 onthihsg 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.
Related Articles
Viết chương trình xóa kí tự trắng thừa trong văn bản bằng Pascal
27 Tháng Mười Một, 2022
Sắp xếp mảng 1 chiều có điều kiện trong Pascal
23 Tháng Mười Một, 2022
Seri 100 bài tập Pascal nâng cao – CHƯƠNG IX : CHUYÊN ĐỀ CHỮ SỐ, HỆ CƠ SỐ
9 Tháng Mười, 2022
Video hướng dẫn xóa ký tự trắng trong xâu pascal
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.intdel_32.out Giua cac tu chi cach nhau mot khoang trang neu co hon 1 khoang trang la co khoang trang thuaGiua cac tu chi cach nhau mot khoang trang neu co hon 1 khoang trang la co khoang trang thuaÝ 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ự
Code xóa khoảng trắng thừa của một xâu trong Pascal
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 12: 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 13: Đế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 21: Đế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.
Tags
dấu cách trong pascal kí tự trong pascal Xâu kí tự xóa các ký tự trắng dư thừa trong xâu xóa ký tự trắng trong xâu pascal xóa ký tự trong xâu pascal