1. Trang chủ
  2. » Văn Hóa - Nghệ Thuật

Tai lieu boi duong HSG tin hoc 8

25 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 215 KB

Nội dung

Nếu số chữ số của con số là lẻ thì ta tách con số làm hai con số, con số thứ nhất lấy nửa dầu các chữ số n giữ nguyên thứ tự nhiều hơn nửa sau 1 chữ số , con số thứ 2 lấy nửa còn lại c[r]

(1)

CHUYÊN ĐỀ XỬ LÝ SỐ - XỬ LÝ CHUỖI Bài 1: XỬ LÝ CHỮ SỐ

1.Lấy chữ số chuỗi (xâu ký tự )  Thủ tục biến đổi chuỗi số

Val(s,x) Thủ tục Chuyển chuỗi số s thành số x Str(x,s) Thủ tục Chuyễn số x thành chuỗi số s

 Qui tắc : + Lấy biến chuỗi chứa số + Sử dụng cấu trúc chuỗi lấy chữ số :

Khi biến chuỗi nhập hay gán giá trị S:= ’3456’

Chuỗi S có cấu trúc mãng nghĩa S[n] ký tự thứ n chuỗi S

Như S[1] ký tự ‘3’, S[2] ký tự ‘4’, S[1] ký tự ‘5’, + Dùng hàm biến chuỗi chữ số thành số để xử lý :

 Ví dụ : Viết chương trình nhập vào số nguyên dương n tính tổng chữ số n Lưu ý n có số chữ số từ đến 255

Chương trình

Program Tongchuso; uses Crt;

Var conso:string;

function TCS(x:string):integer; Var i,chuso,tong:integer; Begin

tong:=0;

For i:=1 to length(x)

Khai báo tên chương trình Sử dụng đơn vị lệnh Crt

Khai báo biến toàn cục conso kiểu chuỗi Khai báo hàm TCS với tham trị x kiểu chuỗi

Khai báo biến cục i, chuso, tong kiểu số nguyên Gán giá trị biến tong ban đầu

(2)

begin

val(x[i],chuso); tong:=tong+chuso; end;

TCS:=tong; end;

Begin

clrscr; write(' Nhap so:') ;readln(conso); writeln(' Tong chu so = ', TCS(conso)); readln;

end

Tong tổng cũ công chuso Gán TCS tong tính

Xố hình; nhập số

- Bài tập:

Bài 1: Con số nguyên dương n gọi số song trùng m với m số nguyên dương n chia hết cho m tổng chữ số n chia hết cho m Viết chương trình

a) Nhập vào n, m Hãy cho biết n có số song trùng hay khơng?

b) Nhập vào hai số nguyên dương k, h , tìm tất số song trùng m từ k đến h?

Bài 2: Con số nguyên dương n gọi song tố n số nguyên tố tổng chữ số số nguyên tố Hãy viết chương trình nhập vào số nguyên dương k, h, tìm số tất số song tố từ k đến h?

Bài 3: Con số nguyên dương gọi số nhị nguyên n có dạng 3k + tổng chữ số n có dạng 3k +1 Viết chương trình nhập vào số nguyên dương k, h Hãy tìm số nhị nguyên từ k đến h?

(3)

có từ chữ số trở lên lại tính tổng chữ số n1 ta n2, tiếp tục đến cịn chữ số Viết chương trình nhập vào số n cho biết sau biến đổi số n theo cách nêu ta số m bao nhiêu?

2.Mã ACCII ký tự số

 Các hàm, thủ tục mã accii ký tự

ord(ch) Hàm Tính mã số accii ký tự ch Chr(n) Hàm Cho ký tự có mã accii n

Mã số accii ký tự số: ‘0’,’1’, ,’9’ 48,49, ,58 nghĩa ord(‘1’) =49 , chr(48)=’0’

 Lọc chữ số chuỗi có nhiều loại ký tự:

+ Lấy ký tự chuỗi S, dùng biến ký tự ch:= S[i]

+ Sử dụng điều kiện tập hợp: ch in [‘0’ ’9’] để lọc ký tự chữ số  Ví dụ: Viết chương trình nhập vào chuỗi gồm ký tự mẫu tự, khoảng trắng chữ số Các chữ số liền chuỗi tạo thành số Hãy cho biết có số chuỗi?

Program locso; uses Crt;

Var ch:char; i,n,dodai,dem:integer;s:string; Begin

clrscr;write('Nhap chuoi s= ');readln(s); dem:=0;

ch:=s[1]; dodai:=0; if (ch in ['0' '9']) then dodai:=1;

for i:=2 to length(s)

Khai báo biến

Nhập chuỗi, gán giá trị biến dem=0

Biến ch nhận ký tự thứ chuỗi s, ch thuộc tập ký tự số biến dodai

Lặp từ đến cuối chuỗi biến ch lấy ký tự thứ i

(4)

begin ch:=s[i];

if ch in ['0' '9'] then dodai:=dodai+1 else if dodai>0 then begin dem:=dem+1; dodai:=0; end;

end;

if dodai>0 then dem:=dem+1;

writeln('So so chuoi s la ', dem); readln;

end

Đến hết chuỗi dodai>0 thi dem tang

 Bài tập :

Bài 1: Cho chuỗi S gồm ký tự mẫu tự, khoảng trắng chữ số Viết chương trình tính tổng chữ số có chuỗi?

Ví dụ: S =’a12bc 5qwer100’ tổng chữ số có chuỗi

Bài 2: Cho chuỗi S gồm ký tự mẫu tự, khoảng trắng chữ số Các chữ số liền chuỗi tạo thành số Viết chương trình tính tổng số chuỗi?

Ví dụ: S =’a12bc 5qwer100’ tổng số có chuỗi 117

Bài 3: Cho chuỗi S gồm ký tự mẫu tự, khoảng trắng chữ số Các chữ số liền chuỗi tạo thành số Viết chương trình tìm số chuỗi chia hết cho 7?

(5)

rồi đến mẫu tự, cuối chuỗi khoảng trắng bảo đảm thứ tự ban đầu chữ số bảo đảm ban đầu mẫu tự

Ví dụ: S =’a12b c5’ khoảng trắng vị trí + Đổi b vị trí vị trí khoảng trắng S=’a12 bc5’ + Đổi a vị trí vị trí khoảng trắng S=’ 12abc5’ + Đổi vị trí vị trí khoảng trắng S=’1 2abc5’ + Đổi vị trí vị trí khoảng trắng S=’12 abc5’ + Đổi vị trí vị trí khoảng trắng S=’125abc’

3.Lấy chữ số số - Phép tốn số

Phép tốn cơng dụng Ví dụ

:= Phép gán giá trị cho biến x:=6 ; x:= y;

+, -, *, / Phép cộng, trừ, nhân chia x:=x+1;x:=y-1;x:= 2*y;x:=y/2 Div Chia lấy phần nguyên x:=10 div ta có x

Mod Chia lấy phần dư x:=10 mod ta có x laø

- Một số hàm số:

Tên Loại ý nghĩa

Int(x) hàm tính số thực phần nguyên x Frac(x) hàm tính số thực phần phân x

Trunc(x) hàm Tính số nguyên phần nguyên x

Str(x:n:m,S) Thủ tục Chuyển số x thành chuỗi S với n ký tự m số thập phân - Số nguyên n:

(6)

+ Lấy chữ số hàng chục: m:= (n div 10) mod 10; + Lấy chữ số hàng trăm: m:= (n div 100) mod 10; - Số thập phân x:

+ Lấy chữ số hàng đơn vị: n:= trunc(x);m:= n mod 10;

+ Lấy chữ số hàng chục: n:= trunc(x);m:= (n div 10) mod 10; + Lấy chữ số hàng trăm: n:= trunc(x);m:= (n div 100) mod 10; + Lấy chữ số thập phân thứ (hàng phần chục): n:=

trunc(x*10);m:= n mod 10;

+ Lấy chữ số thập phân thứ hai (hàng phần trăm): n:= trunc(x*100);m:= n mod 10;

+ Lấy chữ số thập phân thứ ba (hàng phần nghìn): n:= trunc(x*1000);m:= n mod 10;

 Ví dụ: Viết chương trình nhập số thực x, y số nguyên dương n Tính tổng chữ số thập phân thứ đến chữ số thập thân thứ n x chia y;

Program chusothapphan; uses Crt;

Var x,y,z:real;m,n,k,tong :longint;

function luythua(coso,somu:integer):longint; var i,giatri:longint;

begin

giatri:=1; for i:=1 to somu giatri:=giatri*coso; luythua:=giatri;

Khai báo hàm luỹ thừa với tham trị coso, somu Lặp từ đến somu giatri moi = giatri cũ nhân số

Nhập x,

Nhập y, Nhập n

Xuất hình kết x/y với 15 chữ số thập phân

(7)

end; Begin

clrscr; write('Nhap x='); readln(x);

write('Nhap y='); readln(y); write('Nhap n='); readln(n);

Writeln(' x/y =',x/y:0:15); tong:=0;

For m:=1 to n begin

z:= (x/y)*luythua(10,m);n:=trunc(z); k:=n mod 10;

tong:=tong+k; end;

Writeln('Tong chu so thap phan (1-n) la ',tong); readln;

end

lấy chữ số thập phân thứ m

BÀI 3: HỆ CƠ SỐ 1.Định nghóa :

 Con số có n chữ số a1a2a3 an hệ đếm số g thoả

(8)

+ Giá trị số hệ thập phân số mười :a1.gn-1 + a2.gn-2

+ +an.g0

Ví dụ số 12304 hệ số

với hệ thập phân số 10 có giá trị 43 + 42 + 41 + 40 =

108

 Các hệ số đếm thông dụng :

+ Hệ nhị phân : hệ đếm số g =2 + Hệ bát phân : hệ đếm số g =8 + Hệ thập phân : hệ đếm số g =10 + Hệ Thập lục phân : hệ đếm số g = 16 A,B,C,D,E,F chữ số có giá trị 10,11,12,13,14,15

2.Các hàm :

 Từ hệ số g(nhỏ bằng16) chuyển sang hệ thập phân : Phân tích : Ở số g ta có a1a2a3 an = a1.gn-1 + a2.gn-2 + +an.g0

của hệ thập phân Như hệ số g chuyển sang hệ thập phân thực

chất tốn tính tổng Nếu khơng biến đổi mà tính thừa số thừa số phải tính luỹ thừa Để giảm thời gian tính tổng ta tính sau

Bước 1: tổng = a1

Bước 2: tổng = tổng cũ g + a2 = a1.g +

a2

Bước n : tổng = tổng cũ g + an

Thieát keá : tổng a1

Lặp i từ đến độ dài chuỗi

tổng = tổng cũ g +

(9)

Program giatritp; Uses crt;

Var conso:string; coso:byte;

Function HTP(xconso:string;xcoso:byte):longint; Var i,h,n,x:byte;tong: longint; ch:string; k:integer; begin

ch:=xconso[1] ; h:=pos(ch,'ABCDEF');

if h=0 then val(ch,x,k) else x:=h+9; tong:=x; For i:=2 to length(conso)

begin

ch:=xconso[i]; h:=pos(ch,'ABCDEF'); if h = then val(ch,x,k) else x:=h+9; Tong:= tong*xcoso+ x;

end;

HTP:=tong; end;

Begin

clrscr;write('Nhap conso =');readln(conso); write('Nhap he co so =');readln(coso);

writeln('gia tri he thap phan la ', HTP(conso,coso)); readln; end

Tìm vi trí ký tự 'ABCDEF' Tính giá trị chữ số

(10)

Phân tích : Chuyển số hệ thập phân thành số hệ số g ta tìm a1a2a3 an biểu diển số x = a1.gn-1 + a2.gn-2 +

+an.g0

Ta viết lại x = (a1.gn-2 + a2.gn-3 + + an-1)g+an

 an số dư số chia cho g

Ta lại tính (a1.gn-2 + a2.gn-3 + + an-1) x chia cho g lấy phần

thương y

Ta lại viết y = (a1.gn-2 + a2.gn-3 + +an-2)g+ an-1

 an-1 số dư y chia cho g

tiếp tục kết thương

Ví dụ : chuyển số 237 hệ thập phân thành số số g=7 Lấy 237 chia g=7 dư thương 33

Lấy thương 33 chia dư thương nhỏ

Lấy thương chia dư thương dừng phép chia ta số 456

Người ta thường trình bày : 237

6 33

Thiết kế: tạm x;

(11)

tạm thương tam cũ chia cho số

Kết thúc lặp tam =0; Viết ngược số dư ta số Chương trình

Program hecoso; Uses crt;

var conso:longint;coso:byte;ketqua:string; Procedure HCS(xconso:longint;xcoso:byte; Var s:string);

Var tam:longint; stam,ch:string; i:byte; Begin

tam:=xconso; stam:=''; repeat

i:= tam mod xcoso;

if i>9 then ch:= chr(i+55) else str(i,ch); stam:=stam+ch;tam:= tam div xcoso; until tam =0;

S:=''; for i:=length(stam) downto S:= S+Stam[i];

end; Begin

clrscr;write('Nhap conso =');readln(conso);

Lấy số dư

Nếu i>9 chuyển thành chữ A,B,C,D chuyển sang chữ số ,Chuỗi tạm nối thêm ký tự

Lấy thương

(12)

write('Nhap he co so =');readln(coso); HCS(conso,coso,ketqua);

writeln('he co so ',coso,'la ', ketqua); readln;

end

BAØI 4: XỬ LÝ BÍT 1.GIỚI THIỆU:

Trong máy tính tất liệu biểu diển dạng bit ( Biểu diễn dạng nhị phân hệ số ) Ở ta xét đến cách biểu diễn số nguyên

Trong pascal liệu nguyên : byte (8 bit) , integer word (16 bit) , longint (32 bit)

a Ưu điểm phương pháp xử lí bit: Dùng miền lưu trữ Nhờ đó, có

thể giải nhiều tốn có kích thước lớn Chương trình chạy nhanh

b.Phạm vi áp dụng phương pháp xử lí bit:

 Thay mảng Boolean mảng số nguyên có kích thước nhỏ lần

 Thay phép nhân, div, mod số nguyên với số có dạng 2n tốn tử xử lí bit (Bitwise) Thực nhanh nhiều

so với phép nhân, div, mod thông thường  Thay phép toán tập hợp

(13)

a.Dịch chuyển bit sang trái : ShL (Shift Left) Cú pháp : n ShL i

Ý nghĩa :dịch chuyển bit n sang trái i vị trí , bít trống điền

Tương đương phép toán : n shl i = n 2i Ví dụ: ShL

5 = 0 0 1

5 ShL = 0 1 0

b.Dịch chuyển bit sang phải : ShR(Shift Right) Cú pháp : n ShR i

Ý nghĩa:dịch chuyển bit n sang phải i vị trí, bít trống điền

Tương đương phép toán : n shr i = n div 2i Ví dụ: 13 ShR

13 = 0 0 1

13 ShR = 0 0 0 1

c Các phép tính :

bit a bít b not a a and b a Or b a Xor b

0 1

0 0

1 1 1

1 0

(14)

d.Cơng thức tính tốn nhanh: Với a n số nguyên

dương Số nhân số chia có dạng 2n.

a * 2n = a ShL n ; a div 2n = a ShR n ; a mod 2n = a And (2n - 1)

e Ứùng dụng:

Lấy bít thứ i số nguyên x :

Các bít số nguyên x đếm từ từ phải sang trái

13 = 0 0 1

bít thứ Như lấy bít thứ i số nguyên x ta:

Dịch chuyển x sang phải i vị trí ( x ShR i ) Sau AND Hàm lấy bít thứ i

Function LayBit(x, i: Byte) : Byte;

Begin LayBit := (x ShR (i-1)) And 1; End;

Chuyển biểu diễn từ thập phân sang nhị phân: - Lặp từ bit đến bit (hay 15) số nguyên x: - Lấy bit đổi thành kí tự '0' '1' - Gán kí tự vào chuỗi nhị phân

Function DecToBin(x:Byte): String; Var i: byte; S: String;

Begin S[0] := #8;

(15)

DecTobin := S; End;

Chú ý: b + 48 = b Or 48 với b = Chuyển biểu diễn từ nhị phân sang thập phân: - Lặp từ kí tự thứ đến hết chuỗi nhị phân:

- Lấy kí tự đổi thành số số ( Ord(b[i]) and ) - Nhân số thập phân với cộng thêm số

Function BinToDec(b: String) : Byte; Var i, d: Byte;

Begin d:= 0;

For i := To Length(b) Do d := d ShL Or Ord(b[i]) and 1; BinToDec := d;

End;

Chú ý: Ord(b[i]) And = Ord(b[i]) - 48 với b[i] = ‘0’ ‘1’ Gán cho bit thứ i số nguyên x:

- Dùng phép OR số x với số có bit thứ i x = 10010 ( i = )

(16)

Procedure GanBit1(Var x: Byte; i: Byte); Begin x := x Or (1 ShL i); End;

Gán cho bit thứ i số nguyên x:

Dùng phép AND số x với số có bit thứ i x = 10110 ( i = )

And 11011 ( = NOT(1 ShL 2)) x = 10010

Procedure GanBit0(Var x: Byte; i: Byte); Begin x := x And Not(1 ShL i); End;

BÀI 4: XỬ LÝ SỐ

Các toán xử lý số tập trung vào dạng chủ yếu sau: 1.Kiểm tra dạng số

 Vấn đề: Kiểm tra số có thoả điều kiện  Cấu trúc chung:

+ Viết hàm kiểm tra điều kiện

+ Nếu số thoả điều kiện báo cịn báo khơng

 Ví dụ1: Viết chương trình nhập vào số ngun dương n, kiểm tra số n có dạng 5k+3 hay khơng (k số nguyêng dương)? Nếu có xuất hình giá trị k, khơng hình chữ ‘khong’

(17)

uses Crt;

Var n,k :longint;

function ktdang(conso:longint):longint; var i:longint;

begin i:=-1;

if (conso-3) mod =0 then i:= (conso-3) div 5; ktdang:=i;

end; Begin

clrscr; write('Nhap n='); readln(n); k:=ktdang(n);

if n>0 then Writeln('n = 5k+3 voi k=',k); readln;

end

 Ví dụ 2:Viết chương trình nhập vào số ngun dương n kiểm tra số n có dạng 3k +5 hay khơng (k số ngung dương)? Nếu có xuất

hình giá trị k, khơng hình chữ ‘khong’ Chương trình

(18)

Var n,k :longint;

function ktdang(conso:longint):longint; var i,tam:longint;

begin

i:=0;tam:=conso-5;

While (tam>1) and (tam mod 3=0) begin

i:=i+1;tam:= tam div 3; end;

ktdang:=i; end;

Begin

clrscr; write('Nhap n='); readln(n); k:=ktdang(n);

if k>0 then Writeln('n = 3^k+5 voi k=',k); readln; end

 Bài tập:

+ Viết chương trình nhập vào số nguyên dương n, kiểm tra số n có dạng 5k+3h hay khơng (k, h số ngung dương)? Nếu có xuất hình giá trị k, h, khơng hình chữ ‘khong’

+ Viết chương trình nhập vào số nguyên dương n kiểm tra số n có dạng 3k

+5h hay không (k,h số nguyêng dương)? Nếu có xuất hình giá trị

(19)

2.Tìm số thoả yêu cầu

 Vấn đề : Tìm số thoả điều kiện  Cấu trúc chung

+ Viết hàm kiểm tra điều kiện

+ Lặp từ số ban đầu số cuối số thoả điều kiện

 Ví dụ 1: Viết chương trình nhập vào phân số có tử mẫu số hai số m, n nguyên dương Tối giản phân số cho

Chương trình Program timso2; uses Crt;

Var tu,mau,tu1,mau1 :longint;

function UCLN(so1,so2:longint):longint; var tam1,tam2:longint;

begin

tam1:=so1; tam2:=so2; while (tam1<>tam2)

if tam1 > tam2 then tam1:=tam1-tam2 else tam2:=tam2-tam1; UCLN:=tam1;

end; Begin

(20)

tu1:= tu div UCLN(tu,mau); mau1:= mau div UCLN(tu,mau); Writeln('tu moi:',tu1,'mau moi:',mau1);

readln; end

 Ví dụ 2: Viết chương trình nhập vào số nguyên dương n, a, b Tìm tất số từ a đến b có dạng 2k +7h +4.

Chương trình Program timso; uses Crt;

Var n,a,b,dem :longint;k,h:byte;

function ktdang(conso:longint;var xk,xh:byte):boolean; var i,tam1,tam2,tam:longint;kq:boolean;

begin

kq:=false;i:=1; tam:=(conso div )+1; while (i<=tam) and (kq=false) begin

i:=i+1;tam1:=i; xk:=0;xh:=0;

While (tam1>1) and (tam1 mod 2=0) begin xk:=xk+1;tam1:= tam1 div 2; end; if (xk>0) and (conso-4-tam1>0) then

begin

(21)

While (tam2>1) and (tam2 mod 7=0) begin xh:=xh+1;tam2:= tam2 div 7;end; end;

if (xk>0) and (xh>0) then kq:=true; end;

ktdang:=kq; end;

Begin

clrscr; write('Nhap a='); readln(a);write('Nhap b='); readln(b); dem:=0; for n:=a to b

if ktdang(n,k,h)=true then

begin dem:=dem+1;Writeln(dem,':',n,'=2^',k,'+7^',h,'+4 ');end; readln;

end

 Bài tập

+ Bài 1: Một số n nguyên dương gọi số tựa nguyên tố tổng ước số ( khơng tính n) số nguyên tố Viết chương trình nhập vào số nguyên dương a, b, tìm tất số tựa nguyên tố từ a đến b

+ Bài 2: Viết chương trình nhập vào hai số nguyên dương a, b Tìm tất số từ a đến b sau cho số dó phân tích thành tổng hai số nguyên tố

+Bài 3: Viết chương trình nhập vào số nguyên dương n Hãy phân tích n thành tích thừa số nguyên tố

(22)

 Vấn đề : Cho qui tắt biến đổi số, xác định số kết sau biến đổi

 Cấu trúc chung

+ Tìm quy luật chung qui tắc biến đổi ( Các trường hợp chung riêng)

+ Lặp với số lần áp dụng qui tắc Thực biến đổi số

 Ví dụ 1: Cho hai số nguyên dương m, n người ta biến đổi số qui tắc sau: số m số dư tổng hai số chia cho m, số n tích hai số trừ cho n Viết chương trình nhập vào số

nguyên dương m, n, k, Hãy tìm số m, n sau thực hiên k lần qui tắc biến đổi hai số

+ Viết thủ tục bước biến đổi qui tắc

Tam1 := m, tam2:=n; m:= (tam1+tam2) mod m; n:=tam1 tam -n ; + Lặp từ đến k gọi thủ tục qui tắc biến đổi;

 Bài tập:

Bài 1: Người ta biến đổi số n nguyên dương với m lần theo qui tắc sau: Đổi số n hệ nhị phân với 16 bít, đổi bít thứ k (k ≤ 16) thành 1, thành

Bài 2: Cho số n nguyên dương người ta biến đổi co số theo qui tắc sau:

(23)

Hãy viết chương trình nhập vào số nguyên dương n, k Hãy cho biết sau thực k lần biến đổi số n theo qui tắc

BÀI 5: XỬ LÝ CHUỖI 1.Hàm thủ tục chuỗi

Tên Loại ý nghĩa

+ Phép toán Nối hai chuỗi

ord(ch) Hàm Tính mã số ký tự ch

length(s) Hàm Tính độ dài thật chuỗi S Pos(s1,s) Hàm Tính vị trí s1 s

Copy(s,n,m) Hàm Lấy chuỗi từ S, vị trí n với m ký tự Insert(s1,S,n) Thủ tục Chèn s1 vào s vị trí n

Val(s,x,k) Thủ tục Chuyển chuỗi số s thành số x Delete(s,n,m) Thủ tục Xoá chuỗi s từ vị trí n , m ký tự

2.Tìm kiếm chuỗi (ký tự, từ, chuỗi con)  Vấn đề:

 Cấu trúc chung

+ Viết hàm kiểm tra điều kiện

+ Lặp từ đầu chuỗi cuối chuỗi chuỗi thoả điều kiện

 Ví dụ 1: Viết chương trình nhập vào chuỗi S, cho biết chuỗi S có loại ký tự

+ chuỗi ký tự xét xetS:=’’; dem:=0; + Lặp từ đến số phần tử chuỗi

(24)

Dem:=dem+1; setS:=xetS+kýtư

 Ví dụ 2: Một từ mẫu tự liền Viết chương trình nhập vào chuỗi cho biết chuỗi có từ

+ Lặp từ đầu chuỗi đến cuối chuỗi

Nếu ký tự thuộ tập ‘a’ ’z’ độ dài đoạn tăng

Còn độ dài đoạn lớn đếm tắng độ dài đoạn

Bài tập

Bài 1: Viết chương trình nhập vào chuỗi S gồm chữ số 0,1 ,9 mẫu tự a,b z Hãy tìm đoạn S gồm mẫu tự liên tiếp dài

Bài 2: Một từ mẫu tự liền Viết chương trình nhập vào chuỗi S Hãy tìm từ dài chuỗi

Bài 3: Viết chương trình nhập vào chuỗi S gồm mẫu tự Hãy tìm đoạn ký mẫu tự liên tiến dài chuỗi bảo đảm thứ tự a,b,c

3.Biến đổi chuỗi

 Vấn đề: Cho qui tắt biến đổi chuỗi, xác định chuỗi kết sau biến đổi

Cấu trúc chung

+ Tìm quy luật chung qui tắc biến đổi ( Các trường hợp chung riêng)

+ Lặp với số lần áp dụng qui tắc Thực biến đổi số

(25)

Do chuỗi kết thúc ký tự a liền đầu, đến ký tự b liền nhau, đến ký tự c liền cuối khoảng trắng

Ta gọi số ký tự a na , số ký tự b nb, số ký tự c nc  độ dài chuỗi na+nb+nc+1 Khi ký tự a vị trí từ  na, ký tự b vị trí từ na+1na+nb, ký tự c có vị trí na+nb+1 na+nb+nc

Để số lần đổi chổ ta chuyển ký tự sai vị trí vị trí chuỗi kết thúc Như ban đầu (cuối chuỗi) ta chuyển ký tự sai vị trí khoảng trắng khoảng trắng không cuối dãy ta chuyển phần tử sai vị trí khoảng trắng vị trí

 Bài tập

Bài 1: Cho chuỗi có n ký tự khác nhau, số k nguyên dương (k<n) Người ta biến đổi chuỗi sau: Đầu tiên từ đầu chuỗi đếm k bỏ ký tự vị trí k khỏi chuỗi, đếm ký tự lại từ hết chuỗi đếm tiếp từ đầu chuỗi k bỏ ký tự vị trí k khỏi chuỗi, tiếp tục chịn ký tự Viết chương trình nhập vào số nguyến dương n, k cho biết vị trí ban đầu ký tự lại thực biến đổi

Ngày đăng: 20/04/2021, 16:49

TỪ KHÓA LIÊN QUAN

w