Xâu Ký Tự Trong Pascal - Tài Liệu Text - 123doc

Tải bản đầy đủ (.doc) (11 trang)
  1. Trang chủ
  2. >>
  3. Giáo án - Bài giảng
  4. >>
  5. Tiểu học
Xâu ký tự trong pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (54.47 KB, 11 trang )

StringI. Định nghĩa xâu kí tự (String) Xâu kí tự có thể hiểu đơn giản là một mảng một chiều có kiểu phần tử là các kí tự (CHAR). Nhng xâu kí tự chỉ có thể có tối đa 255 kí tự nhng nó có các lệnh xử lí xâu nh : xoá một đoạn trong xâu, copy một đoạn trong xâu... mà mảng kí tự không có đợcII. Cách khai báo xâu VAR Tên_xâu : STRING [độ_dài_cực_đại]; VD : Ta khai báo FileName : String[20]; Sau đó ta thực hiện phép gán : FileName := 'VIDU.PAS'; Lúc này chiều dài thực sự của xâu là 8 mặc dù độ dài cực đại là 20 Ta xét cấu trúc của xâu : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 V I D U . P A S * * * * * * * * * * * * Kí tự 0 chứa độ dài thực sự của xâu, ta có thể viết Độ_dài_thực_sự_của_xâu = Ord(Filename[0]); Kí hiệu * biểu diễn kí tự không xác định Nếu trong quá trình thao tác, độ dài của xâu vợt quá độ dài cực đại thì máy sẽ tự động cắt bỏ phần phía sau xâu kể từ vị trí độ dài cực đại. VD : Khi ta gán FileName := 'HOI THI TIN HOC TRE KHONG CHUYEN'; Thì lúc đó FileName = 'HOI THI TIN HOC TRE ';III. Truy nhập vào phần tử của mảng Do cấu trúc của xâu tơng tự của mảng nên cách truy xuất của nó cũng tơng tự của mảng Tên_xâu [chỉ_số_phần_tử] VD : Muốn gán phần tử thứ 3 của xâu là 'A' Filename [3] := 'A';IV. Các thao tác trên xâu 1. Phép cộng xâu VD : S1 := 'PHAN MEM '; S2 := 'SANG TAO'; S := S1 + S2; Sau đó S = 'PHAN MEM SANG TAO'; 2. So sánh xâu kí tự Khi so sánh 2 xâu máy sẽ so sánh từng cặp kí tự của 2 xâu từ trái qua phải theo giá trị của bảng mã ASCII Nếu 2 xâu có độ dài khác nhau song số kí tự giông nhau đến độ dài của xâu ngắn nhất giống nhau thì xâu có độ dài ngắn hơn thì bé hơn VD : 'FILENAME' < 'FILENAMEA' cho giá trị TRUE 'FiLENAME' < 'FILENAME' cho giá trị FALSE 'FILENAME' = 'FILENAME' cho giá trị TRUE 3. Thao tác nhập xuât Có thể dùng các hàm Write, Writeln, Readln đối với xâu kí tự VD : readln(st); Writeln(st);1V. Các hàm chuẩn xử lí xâu kí tự 1. Length (St) Hàm cho ta độ dài của xâu kí tự St VD : l := length(st); 2. Delete (St, Pos, Num) Thủ tục xoá đi Num kí tự kể từ vị trí Pos trong xâu St VD : S := 'TOI DI HOC'; Delete(s,5,3); { Sau đó S = 'TOI HOC' } 3. Insert (Obj, St, Pos); Thủ tục xen xâu Obj vào xâu St tại vị trí Pos VD : S := 'THANH DA NANG'; Insert('PHO ',S,7); { Sau đó S = 'THANH PHO DA NANG' } 4. Str (Value, St) Thủ tục biến đổi giá trị bằng số nguyên hoặc thực Value thành một xâu biểu diễn số đó. Cách biểu diễn của St sẽ đợc quy cách do qui cách của Value VD : I := 512; Str(I:5,St); Sẽ cho St = ' 512'; 5. Val St, Var1, Code) Thủ tục biến đổi xâu St (biểu diễn số nguyên, thc) thành một số nguyên thực chứa trong Var1. Code là số nguyên để phát hiện lỗi, nếu phép biến đổi đúng thì Code có giá trị bằng 0. Nếu sai Code sẽ là vị trị của kí tự sai. VD : St := '123.56'; Val(st,X,Result); Sẽ cho X=123.56 và Result=0 St := '123X'; Val(st,X,result); Sẽ cho X không xác định và Result=4 6. Copy (St, Pos, Size) Hàm Copy sẽ nhận Size kí tự trong xâu St từ vị trí Pos VD : St := '123456789'; St1 := Copy(St,3,2); Sẽ cho St1='34' 7. Concat(St1,St2,...StN) Hàm ghép nối các xâu St1,St2,...StN thành xâu kí tự theo thứ tự đã viết VD : St1 := 'BORLAND '; St2 := 'PASCAL '; St3 := '7.0'; St := Concat(St1,St2,St3); Sẽ cho St='BORLAND PASCAL 7.0'; Cách viết này tơng tự với ST := St1 + St2 + ... + StN 8. Pos (Obj, Target) Hàm trả lại vị trí đầu tiên của xâu Obj gặp trong xâu Target Pos = 0 nếu không tìm thấy VD : St := '123456789'; Pos('45',St) cho giá trị bằng 3 Pos('4X',St) @1cho giá trị 0 vì không tìm thấy2Bài 1:{ Nhập một chuỗi kí tự. Tỉa bỏ dấu cách bên phải, trái, tỉa giữa (nếu giữa 2 từ có nhiều dấu cách chỉ để lại 1 dấu cách VD : " que huong " -> "que huong"}uses crt;var s:string;{Xâu S} i:byte;{i kiểu byte}begin clrscr;{Xoá màn hình} write('S = ');readln(s);{Đọc S} while(s[1]=' ')and(s<>'')do delete(s,1,1);{Xoá các dấu cách đầu của S} while(s[length(s)]=' ')and(s<>'')do delete(s,length(s),1);{Xoá các dấu cách ở cuối} i:=1;{Gán i bằng 1} while i<length(s)do{Trong khi i < chiều dài của S} begin if(s[i]=' ')and(s[i+1]=' ')then delete(s,i,1){Nếu s[i]là ' ' và s[i+1]cũng là ' ' thì} else inc(i);{Ngợc lại tăng i} end; writeln('Sau khi doi : ',s);{Xuất s} readln;end.Bài 2:{ Nhập chuỗi kí tự, xem chuỗi đó có đối xứng nhau không VD : "ABBA" là đối xứng "RADAr" là đối xứng "AFF" là không đối xứng Hớng dẫn i:=1;j:=length(s); while(upcase(s[i])=upcase(s[j]))and(i<=j)do begin inc(i);dec(j); end; Nếu i>j thì chuỗi đối xứng, ngợc lại thì không đối xứng}uses crt;var s:string;{Xâu S} i,j:byte;{i,j kiểu byte}begin clrscr;{Xoá màn hình} write('S = ');readln(s);{Đọc S} i:=1;j:=length(s);{Gán i bằng 1 và j bằng chiều dài s} while(upcase(s[i])=upcase(s[j]))and(i<=j)do{Trong khi s[i]=s[j] và i<=k thì} begin inc(i);dec(j);{Tăng i. Giảm j} end; if i>j then write('Xau doi xung')else write('Xau khong doi xung');{Xuất kết quả} readln;end.3Bài 3:{ Nhập một chuỗi kí tự. Đổi chuỗi này thành a. Chữ in hoa b. Chữ in thờng c. Chữ in hoa ở đầu từ VD : luOnG tHe ViNH In ra : LUONG THE VINH luong the vinh Luong The Vinh}uses crt;var s:string;{Xâu S} i:byte;{i kiểu byte}begin clrscr;{Xoá màn hình} write('S = ');readln(s);{Đọc S} for i:=1 to length(s)do s[i]:=upcase(s[i]);{Đổi S thành hoa (dùng upcase)} writeln(s);{Xuất S} for i:=1 to length(s)do{Cho i chạy từ 1 đến độ dài S} if(s[i]>='A')and(s[i]<='Z')then s[i]:=chr(ord(s[i])+32);{Nếu s[i] trong khoảng 'A'..'Z' thì đổi s[i]thành 'a'..'z'} writeln(s);{Xuất S} s[1]:=upcase(s[1]);{Đổi s[1]thành kí tự hoa} for i:=2 to length(s)do{Cho i chạy từ 2 đến độ dài S} if(s[i-1]=' ')then s[i]:=upcase(s[i]);{Nếu s[i-1]là ' ' thì đổi s[i]thành kí tự hoa} writeln(s);{Xuất S} readln;end.Bài 4:{ Nhập một chuỗi kí tự. Đếm xem trong chuỗi có bao nhiêu từ Quy ớc mỗi từ viết cách nhau một dấu cách VD : PHAM HUU NGON Có 3 từ Hớng dẫn Thêm kí tự trắng vào đầu S S := ' '+S; Cho i chạy từ trái sang phải. Nếu s[i]là dấu cách và s[i+1] là chữ thì tăng số từ lên 1}var s:string;{Xâu S} i,so:byte;{i,so kiểu byte}beginwrite('S = ');readln(s);{Đọc S} so:=0;{Gán so bằng 0} s:=' '+s;{Thêm dấu cách vào đầu s} for i:=1 to length(s)-1 do{Cho i chạy từ 1 đến độ dài xâu s-1} if(s[i]=' ')and(s[i+1]<>' ')then inc(so);{Nếu s[i]là ' ' và s[i+1]khác ' ' thì tăng so} writeln('Co ',so,' tu');{Xuất so} readln;end.4Bài 5:{ Nhập chuỗi kí tự. Đếm xem trong chuỗi có bao nhiêu kí tự, mỗi kí tự xuất hiện bao nhiêu lần. Hớng dẫn Dùng mảng solan:ARRAY[0..255]OF byte để lu số lần xuất hiện của các kí tự có mã ASCII. VD : Chữ A xuất hiện 3 lần thì ta có solan[ord('A')]=3 hay solan[65]=3}uses crt;var s:string;{Xâu S} solan:array[0..255]of byte;{Mảng solan 0..255 kiểu byte} i:byte;{i kiểu byte}begin clrscr;{Xoá màn hình} write('S = ');readln(s);{Đọc S} for i:=1 to length(s)do{Cho i chạy từ 1 đến độ dài S} inc(solan[ord(s[i])]); for i:=0 to 255 do{Cho i chạy từ 0 đến 255} if solan[i]>0 then{Nếu solan[i]>0 thì} begin writeln('Ki tu ',chr(i),' xuat hien ',solan[i],' lan');{Xuất kí tự i và solan[i]} end; readln;end.Bài 6:{ Viết thủ tục - Xóa n kí tự từ vị trí v của chuỗi S (giống Delete(s,v,n)của Pascal) - Chèn S1 vào sau vị trí v của xâu S (giống Insert(s1,s,v)của Pascal) Hớng dẫn Chúng ta coi chuỗi là mảng các kí tự. Sau khi thực hiện các thao tác xoá, dồn trên chuỗi. Ta gán lại chiều dài của chuỗi bằng cách s[0]:=chr(n); N là chiều dài thực sự}uses crt;var s:string;{Xâu S}procedure xoa(var s:string;v,n:byte); var i:byte;{Khai báo i kiểu byte} begin for i:=v to v+n-1 do{Cho i chạy từ v đến độ dài v+n-1} s[i]:=s[i+n];{Gán s[i]bằng s[i+n]} s[0]:=chr(length(s)-n);{Cập nhât lại độ dài thực sự xâu S} end;procedure chen(s1:string;var s:string;v:byte); var i,l:byte;{Khai báo i,l kiểu byte} begin l:=length(s1);{Gán l bằng độ dài xâu S1} for i:=length(s)+l downto v+l do{Cho i chạy từ độ dài S+l đến độ dài v+l} s[i]:=s[i-l];{Gán s[i]bằng s[i-l]} for i:=1 to l do{Cho i chạy từ 1 đến l}5

Tài liệu liên quan

  • Chuỗi ký tự trong lập trình Chuỗi ký tự trong lập trình
    • 19
    • 892
    • 6
  • Xâu ký tự Xâu ký tự
    • 11
    • 1
    • 19
  • Đếm số ký tự trong đoạn văn bản Đếm số ký tự trong đoạn văn bản
    • 1
    • 634
    • 0
  • Mảng, xâu ký tự, tập hợp Mảng, xâu ký tự, tập hợp
    • 44
    • 1
    • 4
  • Kiểu xâu ký tự Kiểu xâu ký tự
    • 6
    • 504
    • 1
  • [Part7 C++] Con trỏ và Xâu ký tự C++ [Part7 C++] Con trỏ và Xâu ký tự C++
    • 77
    • 650
    • 0
  • Mảng và xâu ký tự Mảng và xâu ký tự
    • 36
    • 861
    • 2
  • Xâu Ký Tự Xâu Ký Tự
    • 4
    • 582
    • 1
  • Xâu ký tự trong pascal Xâu ký tự trong pascal
    • 11
    • 6
    • 120
  • Tài liệu Ngôn ngữ lập trình C++ Chương 5 – Con trỏ và Xâu ký tự ppt Tài liệu Ngôn ngữ lập trình C++ Chương 5 – Con trỏ và Xâu ký tự ppt
    • 77
    • 630
    • 1

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

(60.5 KB - 11 trang) - Xâu ký tự trong pascal Tải bản đầy đủ ngay ×

Từ khóa » Cách So Sánh 2 Xâu Trong Pascal