100 Lip hinds Patend - Ma (2d
Begin
Clrscr;
Writeln( Chương trinh tim một xảu con chung cực" +dai cua hai xau:’):
Write(' Nhập xâu $1 : ');Readin($1): Write’ Nhap xau 82 : ');Readin($2), 11:=length(s1); I2:=length(s2)}: k:=0; kmax:=0; For i:=1 to 14 do For j:=1 to 12 do Begin If (s1[=s2{j}) then Begin k:=†: While (i+k<=I1 )and(j+k<=I2) and (S1fitk}=s2[j+k]) do inc(k): If kmax<k then Begin kmax:=k; imax:=i; End; End; End:
if kmax=0 then Wrtteln(Hai xâu S1 va S2 khơng cĩ + xâu con nào chungl)
Else Begin
Trang 3102 Lip brink Pascal - Tip 3 End; End; if not(d) then Writein(‘Khéng cé x4u nhu vay!’); Readin; End 42 Program P3412; Uses crt; Var s1, s2: string; p, k, f1, l2: byte; Begin Cirscr; Writein(‘Chuang trinh tim vi tri cudi cling cla $1’ + rong S2 ?);
Trang 4Phan 2 HUGNG DAN 103 Else Writetn('Kếtquả :0.); Readln; , End 13 Program P3413; Uses crt; Var s1, $2: string; s, i, 11, 12: byte; Begin Clrscr;
Writeln(‘Chuang trinh tính số lần lặp của S1 trong S2:);
Trang 5104 La iw drat Pn wad - ‘Kin 3 Writeln(' Chương trình tinh số lần lặp rời nhau của'
+'S1 trong S2:
Trang 6Phần 2 HƯỚNG DAN 405
+'tương ứng với cùng mơt cách xếp quân bái khơng;?, Write( Nhập độ dài N : ?; Readin(N);
Trang 7106 Lip tinh Pascal - Tap 3 16 Program P3416; Uses crt:2 const tap = ['0''1'; Var s: array[1 2] of string; n, i, dem: byte: ch: char; Begin Clrscr; Writeln( Biến đổi xâu nhị phân S1 độ dài N thành” +'xâu S2:);
Wnite(' Nhập độ dài N : ); Readin(N); Writeln( Nhập 2 xâu nhị phân S1 và S2 : ), For t:=1 to 2 do : Begin dem:=0; Write(’ Nhập xâu SỈ, : ), Repeat ch:=readkey; if ch in tap then Begin inc(dem); Wnte(ch); S[Ï}=s[i]+ch, End; Until dem=N; Writeln; End;
For i:=1 to ndo
Trang 8Phần 2 HƯỚNG DẪN 407 Writeln( Vì trì 'i:2; : so ',s[1][j' —> ',s[2][i]); Readlln; End 17 Program P3417; Uses crt; Var n,i, s, st: integer; xi: string: Begin Clrscr, Writeln('Chương trình viết xâu độ dài N dãy các + 'số tự nhiên:; Write(_ Nhập số N: , Readln(n); i:=1; si=1; While (s<=n) do Begin White(i); st:=s; i+; If (i<=9) then s:=s+1 Else if (i<=99) then s:=s+2
Trang 9108 Lie toh: Pascal - ` ; 18 Program C3418; Uses crt; Var n, ¡, s, st integer; XI: string; Begin Clrscr: Writeln( Chương trình viết xáu độ dài N dãy các + 'số tự nhiên, '), Write(Nhập số N : );Readln(n); i=; s.=1; While (s<=n) do Begin Wrtte(), st:=s: =i+Í; if (i<=9) then s:=st+1 Else if (i<=99) then s:= s+2 Else if (i<=999) then s:= s+3
Trang 10Phần 2 HƯỚNG DẪN s 109 19 Program C3419; Uses crt; Const n: integer=255; st: string[3]F 100; s(2: string[3]E'001'; Var s, sc: integer; Begin Clrscr;
Writeln('Chương trinh viết xau dai 255 ki tu la phan’ +'đầu của xâu 1(100) :); Write{ 4); S;=1; While (s<=n) do Begin §C:=§; S:=§†3; if (s<=255) then Write(st); End; Write(copy(st, 1,n-sc));
Writeln; Writeln(' Chương trình viết xâu dải 255 kí tự là phan’
Trang 11410 | Lig binh Pascal - Tap 3 20 A= 1(01)"0=1 0101 01 0 n lan 01 B= 0(10)"1 =0 1010 10 1 m lần 10
Trang 13112 Lip tnads Pascai - ‘hin 3 4 Program C3504; Uses crt, Var b: atray[1 100] of real: a:real; n, i: byte; Begin Clrscr;
Write(_ Nhập độ dài của dãy số thực : );Readln(n); Writeln(_ Nhập các phân tử của day’);
For i:=1 ton do Begin
Write( b[.i/]= };eadln(b[l);
End:
Write(’ Nhap $6 thuc a: ‘};Readin(a):
Trang 14hần 2 HƯỚNG DẪN 113
Begin
Clrscr,
Write(` Nhập độ dài của dãy số nguyên: );Readln(n);
Writeln(' Nhập các phần tử của dãy : ); For i:=1 to n do Begin Write(‘ af',i,'] = ‘);ReadIn(ali)); End; Writeln(' Các phần tử khác nhau của dãy : ); I:ZÍ; Repeat trung:=false, For j:=1 to —† đo
Trang 15114 Lép bint Pascal - Tip 3 Readln(n); Writeln(' Nhập các phần tử của dã y: ); For :=1 to n do Begin Write(' af',i,'] = 3;Readin(alïl); End; È=1; Repeat trung:=false; For j:=i+1 ton do
Trang 16Phần 2 HƯỚNG DAN 115 While not(j in sang) do inc(j); Write(j:8); ij; Repeat sang:=sang-[t]; Ì:=i*l; Until Ì>n; Until sang=| |; Readin; End 8 Program P358; Uses crt;
Var thang: byte; tien, lai, x: real; Begin
Clrser;
Writeln(' Chương trình tính thời gian rút tiền lãi: '},
Write(' Số tiền lãi muốn rút ra :");Readln(X); tien:=1000; thang:=1; repeat lai:=tien*8/100; tien:=tlen+lai; thang:=thang+1; Until tien>=x;
Wnteln(' Bạn phải gti tién trong ', thang div 12,
Trang 17116 “âu J3 Pascal - ‘Vip 3
Writeln(' Khi đĩ số tiền bạn rút ra được là ',tien:12:2,' đồng );
Readln; End
9 Program P3509; Uses crt;
Trang 19118 Lép tinh Paseal - Tip 3 afit+1):=d; Until afi]=0; Writeln(' USCLN cla '\N,' 86 trên là : ', a[n]); Readin; End 12 Dung 1 1 1 Ví dụ: Tỉnh S=z 1+—+—+x +— ` 2 3 N cho đến khi 1/N <= ¢ (e rat bé dudc nhập từ ban phím) a) Dùng While: =1; S:= 0;
Trang 20Phần 2 HƯỚNG DẪN 419 S:= St; inc(); End; Until (4/1 <= Epxilon); 143 Program P3513; Uses crt; Var a‘array {1 100] of integer; n, t: byte; imax: byte; Begin Clrscr;
Writeln(’ Tim max clia mét dBy sO nguyén dé dai N:’);
Write(’ Nhap sé N :'); ReadIn(n); Wrileln( Nhập các phần tử của dãy : ');
Trang 22Phần 2 HƯỚNG DẪN 121
Until i>n;
Writeln(' Phần tử lớn nhất của mảng trên là a[',
Trang 23122 Lap hink Pascal - 'lếp (3 - imax:=i; jmaX:=j; End: inc(j): Until j=i; inc(i); Until i>n;
Wrileln(' Phần tử lớn nhất trong ving tam gidc’
Trang 24Phan 2 HUGNG DAN 123 End: For i:=1 to N do Begin For j:=1 to M do Write(A{i,j}:6:2); Wiitetn: End; Write(‘Cho 6 (j)=); Readln(1, j1): Max:=(i1-1)`J3; Pos:= tren; JfMax<{(N-i1)”ƒ1 \hen Begin Max:=(N-i1)"J; Pos:=' duoÏ; End; If Max<(j1-1)7i1 then Begin Max:=(j1-1)*i1; Pos.=' traf; End; If Max<(M-j1)*i4 then Begin Max:=(M-j1)*i1; Pos:=' phai; End;
Write(‘Hinh chữ nhật lớn nhất của lưới khơng chứa +
“điểm (, ¡1 j1,)'+ nằm ở bên +Pos+' của điểm đĩ ')
Trang 25124 Lig bunt; Pascal - ‘lap ở
17 Program C3517;
Uses crt:
Var a: array [1 100,1 100] of integer, m,n, S, smax, ai, aj, Di, bj: integer; vitri: string;
Begin
Clrscr; `
Writeln(' Tìm miền chữ nhật lớn nhất khơng chứa' +’(i,j) cla mat lưới ơ vuơng NxM :; Write(’ Nhap sé N : '); ReadIn(n);
Trang 28Phan 2 HUGNG DAN 127
Writeln(' Miền chữ nhật lớn nhất khơng chứa (¡j)}
'của luớởi 6 vuơng |};
Writeln(' là miền chữ nhật", vitri,' À và B, cĩ diện tích ', smax); Readh; End 18 Program C3518; Uses crt; Var a:array [1 100] of real; n, : byfe; c: real; Begin Cirscr; Wrileln(' Tìm một giao điểm của một đường thẳng với' + một dãy số độ dài N :'; Write(’ Nhập số N: );Readln(n); Writeln(f' Nhập các phần tử của dãy : ', For I:=1 to n do Begin Write(’ af',i,'] = '}; Readin{alil); End; WriteIn(' Nhập số c : );Readln(c); Writeln(’ Cac diém cất :); n=; Repeat
Trang 30Phần 2 HƯỚNG DẪN 129 Writeln(' Nhập các phần tử của dãy : °,
Trang 31130 Lip tink (aAn2l - Tip 3
Trang 33132 Lip tink Pascal - Tip 3 2 Program C3602; Uses crt; Var st: string; Begin Clrscr; Write{(Nhập một xâu kí tự : );Readln(sÐ); While st[1]= #32 do Delete(st, 1, 1); Writeln(st); Readln; End 3 Program C3608; Uses cn; Var st:string; Begin Clrscr;
Write( Nhập một xâu kí tự : );Readln(st),
Trang 34Phần 2 HƯỚNG DẪN 433 else tu:= copy (st, 1, p-1): Write(tu): Readhn; End 5 Program P3605; Uses crt; Var st, st1: string; i, p, $: byte; Begin Clrscr; Wrileln(' Chương trình thực hiện ham’ + ‘Copy(St,Pos,Size) ;’}; Write(‘Nhap mét xau ky tu St : );Readln(st); Write(‘Nhap gia tri Pos : );Readln(p); Write(‘Nhap gia trị Size : );Readln(s);
sI1:=''; {xâu rỗng}
Trang 35134 Lip brink Pascal - ‘Tip 3 I:=length(st); p:=pos('\‘ st); lf (p<>0) then st†:=copy(st,†1,p-1)+ "H' + copy(stpt1,bp) Else ‘ stt:=st} st2:="" ste:=st; Repeat |:=length(stc); p:=pos("**"' stc); If p<>0 then Begin st2:= st2 + copy(stc,1,p): Delete(stc,1, p+2); End; Until p=0; st2:=st2+stc; Writeln’ St ='\st);
Writeln(' Thay thế "," đầu tiên bằng “!!" ; St1 = '\st4);
Trang 36Phần 2 HƯỚNG DẪN 435
©lrscr:
Writeln('Chương trinh thay thé "house" dau tién’ + ‘barig “houses” và loại bé “abc” dau tiên: );
Write(‘Nhap mot xau 20 ki tu St : );Readln(sl); st1:=st; st2:=st; P:=pos( house”,s†1); lf (p<>0) then insert(‘s’,st1,p+4); p:=pos(‘abc’,st2); if (p<>0) then delete(st2,p,3): Writeln(’ St = ',st); Writeln(’ Thay thé “house đầu tién bang’ +' “houses”: St1 ='\st1); Writeln(' Loại bỏ "abc" đầu tiên : S2 = s2); Readln; End 8 Program P3608; Uses crt; Var st: string[20}; st: string; |,p: byte; Begin ©lrscr;
Writei::¡' Chương trình loại bỏ "abc" :);
Write( Nhập mơt xâu 20 kỉ tự S† : );Readln(sÐ; SI1:=sÌ:
Repeal
Trang 37136 End Lip tinh Paseal -Tép 3 If (p<>0) then delete(st1,p,3); Until (p=0); Writeln(’ St =‘, st); Writeln(' Loai bd “abc” : St2 =‘, st); Readin; 9 Program P3609; Uses crt; Var st: string[20}; ¡,p: byte; Begin End Clrscr;
Trang 38Phan 2 HUGNG DAN 137 Clrscr; Writeln( Chương trình tách từ :); Write(Nhập mội câu ); ReadiIn(cau); Repeat While (cau <> “) and (cau[1]=#32) do Delete(cau, 1 1); l:= length(cau); p:=pos(‘', cau); if (p<>0) then tu:= copy(cau,1, p-1) Esle tu:=cau; Delete(cau, 1, length(u)); Writeln(tu); Until (cau="): Readin; End 11 Program P3611; Uses crt; Var st: string; i, | byte; Begin Clrscr;
Writeln(‘Chuong trinh thay ky tu khác trống bằng "a":);
Trang 39138 Lap Lush Pascal - ‘Vip 3 12 Program P3612; Uses crt; Var st, st1: string: i, 1 11, p, pt, p2: byte: Begin Clrscr;
Writeln(' Chương trình loại bỏ dấu ngoặc ( ) : ;
Trang 40Phần 2 HƯỚNG DẪN 139 13 Program P3613; Uses crt; Var st string: i: byte; Begin Clrscr; Writeln(' Chương trình xử lý ““” : `}; Write(‘Nhap mot xau : ‘); Readin(st); I:=length(sl);
Trang 41140 Lig hinh Pascal - Tig 3 I:= length(st); p:= pos(’.'st): For i:=p to | do If st(i]="3° then stfi}:= '+; Writein(' Két quả : ',SĐ, ' Readln; End 15 Program P3615; Uses crt; Var st: string; i, | byte; Begin Clrscr; Writeln('Chương trinh xử lý ":° và "!" :); Write(Nhập mội xâu : ); Readln(st); l:=length(st); For i:=1 to (I div 2) do f stlil= then s[Ï:= ',; For i:=(I div 2+1) tol do
If st{i]J="!" then stfi}:= “; Writeln(' Kết qua : ',St): Readin; End 16 Program P3616; Uses crt;
Trang 42Phần 2 HƯỚNG DAN 141 st, b: string; l,i, n: byte; c: integer; Begin Clrscr;
Writeln(' Chương trinh xử lý xâu cĩ số :);
Trang 43142 Lig tinh Pascal - Tin 3
b) Néu Sic S2 va néu S2 lap trong S thi S1 cũng đã
lặp trong S Vậy TA(S1,S) >= TA(S2,S)
18 Đặt m= TAS(S1,S2) và n = TAS(S2,S) thì cứ mỗi
lần S2 lặp rời nhau trong S thi vì nĩ chứa m lần S2 nên $2
đã lặp rời nhau trong S m lần, Do đĩ: TAS(S1,S)>=m.n (đpcm) 49 Khẳng định: nếu S1c S2 thì TA(S1,S) >= TA(S1,S2) TA(S2,S) là sai Ví dụ: S1 = a` S2= ‘aa’, S= ‘aaa’ Khi đĩ TA(S1,S) = 3 TA(S1,S2) = 2 TA(S2,S) = 2 Và 3<2.2 là bất đẳng thức ngược lại 20 Program P3620; Uses crt;
Const hoa: set of char=ƑA' Z]; dau: set of char=[ ',:,!'?]; Var st: string;
I, i, j: byte: Begin
Cirser;
Writeln(‘Chuang trinh stta 1di chinh ta :’);
Trang 44Phần 2 HƯỚNG DẪN 143
Wnie(i<=L) and (stfi] = #32) do inc(i); If i<=L then sifil:=upcase(stfi));
While(i<=L) and not (st{i] in dau) do inc(Ì); Until i>L; For i:=1 to L<1 do If (st{j} in hoa) and (j<!) and (st{j+1] in hoa) then st [j+1]:= chr (ord(st[j+1]}+32); Wnlteln(st); Readln; End §7 ƠN TAP: DU LIEU VA THUAT TOAN 1 Program P3701; Uses crt; Const Max=1000: Type Day=array(1 Max} of real; Var A: Day; Nik: integer; Nh: real: Begin Clrser;
Trang 46Phần 2 HƯỚNG DAN 145 Tg: real; Begin Clrscr;
Write(Số phân tử của dãy số Á là p=);ReadIn(p);
Writeln(Nhập các phần tử của dãy số}
For t:=1 to pdo Begin
Write(A[,¡,]E);ReadIn(A[i); End;
Write(‘S6 phan tử của dãy số B.là q=);Readln(q); Writeln(Nhập các phần tử của dãy số); For i:=1 to q do Begin Write(‘Bf’ i, =');Readin(B{i]); End; For i:=1 to ptq do lfi<=p then C[]:=Afi] Eise C[i'=B[i-p]; For i:=1 to ptq-1 do For j:=i+1 to p+q do lf C[]>C[] then Begin Tg:=CỊ], C[:=CII, CHI=tg; End:
Writein(‘In day C sau khida sắp xếp);
For i:=1 to ptq do Write(Cfi}:8:2);
Write(‘Nhan Enter dé két thuc ’);
Trang 48Phần 2 HƯỚNG DẪN 447 ch: char; Begin Clrser;
Trang 49148 Lap tink Pascal - Tag 3 k:=me-md+1; _ For ï:=md to me do case s[1]{i} of '0:s[1]Il:=1; "1:s[1Il]=0; End; if s[1}<>s[2] then
Trang 50Phần 2 HƯỚNG DẪN 149 b) 4 0001011001110 1 1 0 0 0 10 1 1 0011010 1 Ø0 0010001011010 1 0000 i1 1011011010 1 0 0 110190 19011010 1 1170101010 11010 0 1 1010101011010 Vậy hai xâu đã cho khơng phải là 3 tương đương 6 Program P3706; Uses crt; Const tap=!'0','1']; Var s: array[1 2] of string; n, k, i, j, dem: byte; ch: char Begin Clrscr;
Writeln( Kiểm tra hai xâu nhị phân độ dai N cho’ + trước cĩ phải là k tương đương khơng : *;
Write(Nhập độ dài N : ');Readln{N);
Trang 51450 Lp tinh Pascal - Tig 3 End inc(dem), Write(ch}; s{it=s[i]+ch; End; Until dem=N; Writetn; End; Write(’ Nhập số k<=N : );Readin(k); r=} Repeat if (s(1}[i]<>s(2I[i]) then: For j:=i to itk-1 do if (s[1][J='0') then s{t}{}:="1° Else s(1]{j}:='0'; inc(i); Until (i>n-k+1);
lf s{1]<>s[2] then Wiite(Hai xâu s† và s2 khơng +
'phải là ,k,tương đương)
Trang 52Phần 2 HƯỚNG DẪN 151 Vậy hai xâu đã cho là 2 tương đương nên chúng tương đương 8 Program P3708; Uses crt; Var count,n\.n: integer; kt: boolean; Begin Clrscr; count:=1; kt:=false: Write(’.’); ReadIn(n); Repeat Whiteln('Boc sé nguyén>=1');