| Nơi trao đổi thông tin Văn Lang Nơi trao đổi thông tin, tăng cường hợp tác, giải đáp những vướng mắc khi học lập trình Pascal |
Tìm kiếm |
---|
Display results as : Số bài Chủ đề | Advanced Search |
|
Nơi trao đổi thông tin Văn Lang :: Lí thuyết :: Mảng và xâu |
Chuỗi (Xâu kí tự) | |
| 3 posters | Tác giả | Thông điệp |
---|
AdminAdminPosts : 122Danh tiếng : 7Join date : 10/11/2014Age : 23 | Tiêu đề: Chuỗi (Xâu kí tự) 15/1/2015, 22:47 | I / Định nghĩa : Xâu kí tự là một cấu trúc dữ liệu , quản lý một dãy liên tiếp các kí tự . Số lượng các kí tự của xâu được gọi là độ dài của xâu . Để biểu diễn một hằng là 1 xâu kí tự , người ta viết xâu kí tự này giữa 2 dấu nháy Thí dụ : ‘Tran van Thanh’ là hằng có kiểu xâu kí tự và có độ dài bằng 14. II / Khai báo : Type Tên_Xâu = String[ n] ; { n là độ dài tối đa của xâu có kiểu Tên_Xâu } Var Tên_biến : Tên_Xâu; Thí dụ : Type STR1 = String[28]; Var S1 : STR1; S2 : String;Biến S1 : Có kiểu xâu kí tự độ dài tối đa 28 kí tự . Biến S2 : Có kiểu xâu kí tự độ dài tối đa 255 kí tự .Chú ý Truy nhập kí tự thứ i trong xâu S ( Kể từ trái qua phải ) thông qua S[i] . Đặc biệt có 1 trong 2 cách tổ chức xâu , người ta qui định S[0] là kí tự chỉ độ dài của xâu .Thí dụ :S 1:= ‘Tran van Thanh’ thì S[0] là #14 { Ord( S[0] ) =14 }Kích thước của biến S1 là 12+1=13 Byte ; biến S2 chiếm 255+1=256 Byte.III / Các phép toán - Các thủ tục và hàm xử lí xâu :1 ) Các phép toán : + Phép gán : Hai xâu cùng kiểu có thể gán giá trị cho nhau + Phép cộng : S1 = ‘Trần’; S2 = ‘ văn Thanh’; S = S1+S2 thì S = ‘Trần văn Thanh’ + Các phép so sánh =, >, < @ S1 = S2 nếu chúng cùng kiểu và từng kí tự tương ứng của chúng như nhau @ Xét S1 , S2 cùng kiểu , có độ dài tương ứng là L1,L2 .Ta nói S1<S2 nếu : - Hoặc N <Min{L1,L2} sao cho với mọi i<=N thì S1[i] = S2[i] , và S1[i+1]<S2[i+1] .Thí dụ :’Thanh’<‘Thi’ - Hoặc L1<L2 và với mọi i <=L1 thì S1[i]=S2[i]. Thí dụ :’Than’<‘Thanh’2 ) Các Hàm : + Length(S) Cho giá trị kiểu Integer là độ dài của xâu S . Length(S) = Ord(S[0])-48 Thí dụ X:= Length(‘ABCD’) Thì X=4 + {Function Pos (S1,S2 : String): Byte;} Cho giá trị kiểu Byte là vị trí bắt đầu kể từ trái qua phải thấy S1 trong S2 Thí dụ S2 := ‘ABCDE’ S1 := ‘BC’ Pos(S1,S2) sẽ là 2 + {Function Copy(S: String; I: Integer; N: Integer): String;}Hàm này trả giá trị là một xâu con của xâu S , đó là xâu gồm n kí tự liên tiếp của xâu S , kể từ kí tự thứ i trở đi Thí dụ S1 := ‘ABCDE’ thì Copy(S1,2,3) sẽ là xâu ‘BCD’ + {Function Concat (S1,S2,..,Sn : String): String}Nối các xâu kí tự S1,S2,..,Sn thành 1 xâu Thí dụ S2 := ‘ABCDE’ S1 := ‘BC’ thì Concat(S1,S2) sẽ là ‘BCABCDE’2 ) Các thủ tục : + {Procedure Delete(var S: String; I: Integer; N:Integer)} Xoá N kí tự liên tiếp trong xâu S , kể từ kí tự thứ I + {Procedure Insert (S1,S2 : String; i : Integer)} Chèn xâu S1 vào vị trí thứ i của xâu S2 + { Procedure Str(X [: Width [: Decimals ]]: Kiểu_x; var S:string); Chuyển số x thành xâu kí tự chữ số là S . Kiểu_x là kiểu số + { Procedure Val(S; var x: Kiểu_x; var Code: Integer);} Chuyển xâu S dạng kí tự chữ số thành số x ( Kiểu số ) , code là giá trị thông báo lỗi khi chuyển đổi ở vị trí nào đó trong xâu S . Một số thí dụ :Xử dụng hàm PosThi du : Var S: String; Begin S := ' 123.5 '; { Chuyển kí tự trống thành chữ số 0 } While Pos(' ', S) > 0 do S[Pos(' ', S)] := '0'; End.Xử dụng hàm Copy Uses Crt; Var S: String; Begin S := 'ABCDEF'; Writeln('S = ',S); Writeln('Copy(S, 2, 3) thi S --> ',Copy(S, 2, 3)); { 'BCD' } Readln End.Xử dụng hàm Concat Var S : String; Begin S := Concat('ABC', 'DEF'); { 'ABCDE' } End.Xử dụng thủ tục STR Uses Crt; Var S : String; BEGIN Str(-53.22:10:4,S); Writeln(-5.322,' ',S); Readln; END.{Trên màn hình :-5.3220000000E+00 -53.2200}Xử dụng thủ tục Val Uses Crt; Var Code: Integer; x : real; Begin Val('-5.322E+03', x, Code); If code <> 0 then Writeln('Lỗi tại vị trí : ', Code) Else Writeln('x = ',x:4:0); Readln; End.{Trên màn hình : x = -5322}{Nếu khai báo x : Integer ; thì trên màn hình sẽ thông báo : Lỗi tại vị trí : 3 }Xử dụng thủ tục Delete Var s : string; Begin s := 'Honest Abe Lincoln'; Delete(s,8,4); Writeln(s); { 'Honest Lincoln' } End.Xử dụng thủ tục Insert Var S: String; Begin S := 'Honest Lincoln'; Insert('Abe ', S, ; { 'Honest Abe Lincoln' } End. | LikeDislike |
| | | toxic321Posts : 15Danh tiếng : 2Join date : 21/08/2019 | Tiêu đề: Re: Chuỗi (Xâu kí tự) 28/8/2019, 09:07 | uses crt;Const so=['0'..'9'];var s:string; i,j:integer;{}procedure doicho(Var x,y:char);Var t:char;Begin t:=x; x:=y; y:=t;{}End;beginclrscr; write('nhap xau can xu li :');readln(s); while s[1]= ' ' do delete(s,1,1); while s[length(s)]= ' ' do delete(s,length(s),1); for i:=length(s) downto 1 do if (s[i]=' ')and(s[i-1]=' ') then delete(s,i,1); for i:=1 to length(s) do if s[i]in['A'..'Z'] then s[i]:=chr(ord(s[i])+32); for i:=1 to length(s) do s[1]:=upcase(s[1]); for i:=1 to length(s) do if (s[i]=' ') then s[i+1]:=upcase(s[i+1]); If (s[length(S)]<>',') and (s[length(S)]<>'.') then s:=concat(s,'.'); write('chuoi sau khi chuan hoa la: ',s); Writeln; For i:=1 to length(s) do For j:=1 to length(s) do If (s[i] in so) and (s[j] in so) and (s[i]<s[j]) and (i<>j) then doicho(s[i],s[j]); Writeln('Chuoi sau khi sap xep:'); Write(s);readln;end. | LikeDislike |
| | WatsonPosts : 5Danh tiếng : 0Join date : 26/08/2019 | Tiêu đề: Re: Chuỗi (Xâu kí tự) 28/8/2019, 19:49 | uses crt;Var a: array[1..10] of integer; n: Longint; i,k:integer;Beginclrscr; Write('Nhap so: ');Readln(n); n:=abs(n); Write('Nhap k: ');Readln(k); i:=0; While n>0 do begin i:=i+1; a[i]:=n mod 10; n:=n div 10; end; Write('Chu so thu ',k,'la: ',a[i-k+1]); Readln;End. | LikeDislike |
| | WatsonPosts : 5Danh tiếng : 0Join date : 26/08/2019 | Tiêu đề: Re: Chuỗi (Xâu kí tự) 10/9/2019, 08:17 | uses crt;var a,b,UC,i:integer;begin clrscr; write('nhap a,b:');readln(a,b); i:=1; while a<>b do if a>b then a:=a-b else b:=b-a; UC:=a; write(UC,' ' ); repeat i:=i+1; until (UC mod i=0); if i=UC then writeln(UC,'day la hai so than thiet') else writeln(UC,'day khong phai la hai so khong than thiet'); readln; end. | LikeDislike |
| | Sponsored content | Tiêu đề: Re: Chuỗi (Xâu kí tự) |
| | Chuỗi (Xâu kí tự) | |
|
Trang 1 trong tổng số 1 trang |
Similar topics | |
|
Similar topics | |
| » Tham gia chuỗi tọa đàm trực tuyến: Một tuần làm "Du học sinh kiểu Úc" ngay tại Việt Nam |
Permissions in this forum: | Bạn không có quyền trả lời bài viết | Nơi trao đổi thông tin Văn Lang :: Lí thuyết :: Mảng và xâu | |
|
| Nơi trao đổi thông tin Văn Lang :: Lí thuyết :: Mảng và xâu | |
|
|
Chuyển đến: Chọn Diễn Đàn||--Các chuyên đề hay|--Lí thuyết| |--Làm quen với Pascal| |--Các cấu trúc điều khiển| |--Mảng và xâu| |--Tệp (File)| |--Bài tập| |--Các vòng lặp| |--Cấu trúc điều kiện| |--Mảng| | |--Mảng hai chiều| | |--Mảng một chiều| | | |--Xâu kí tự| |--Tệp (File)| |--Bài tập cơ bản| |--Thảo luận| |--đưa bài| |--Các bộ đề thi|--Thông tin công nghệ|--Các chương trình lớn viết bằng Pascal | | Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất |