, . . , , , . , , , , .
, .. , , . , . .
. , ( , ) .
Info | Link | |
1 2 3 | - , (Info) (Link). | |
N |
, . . / , , . .
, , . , .
( ). . .
. top, (, '(') +1. , 1. top.
36
program skobkal; (* *)
var top, i, n: integer; slovo: string[100]; skob: string[100];
begin
write(' : ');
readln(slovo); n:length(slovo);
top:=0; skob:=''; i:=l;
|
|
while (i<=n) do begin
if slovo[i]=')' then begin top:=top+1; skob:=skob+slovo[i] end;
if slovo[i]=')' then begin
top:=top-l; skob:=skob+slovo[i] end;
i:=i+l
end;
writeln(skob);
if top=0 then write(' ') i else write(' ');
readln.
end.
skob " .
, , , , . , . , , . .
37
program skobka2; (* *) var top, i, n: integer;
slovo: string[100];
store: array [1.. 100] of char; -x: char.; sicob: string[100];
p: boolean;
begin
write(' : ');
readln(slovo); n:=length(slovo);
top:=0; p:=true; skob:=''; i:=1;
while (i<=n)and(p) do
begin if (slovo[i]='(') or (slovo[i]='[') or (slovo[i]='(') then begin top:=top+l; store[top]:=slovo[i];
skob:=skob+slovo[i] end;
if slovo(i]='}' then begin x:=store(top];
if x<>'(' then p:=false
else begin top:=top-l; skob:=skob+slovo{i] end;
end;
if slovo[i]=']' then begin x:=store[top];
if x<>'[' then p:=false
else begin top:=top-l; skob:=skob+slovo[i] end;
end;
if slovo(i]=')' then begin x:=store(top];
if x<>'(' then p:=false
else begin top:=top-l; skob:=skob+slovo[i] end;
end;
i:=i+l end;
writeln(skob); if top=0 then write(' ') else write(' ');
readln
end.
: , , .. - , , .
. . v, . 1..100. , .
.
38
program bank;
uses crt;
type item = integer;
var qq:array[l..100] of item; i, t, v, L, R; integer;
, x: real; st: string[10];
begin (* *)
qq[l]:=random(100); qq[2]:=random(100); qq[3]:=random(100);
L:=l; R:=3; :0,6 v:=2; randomize; t:=0;
repeat
t:=t+l; x:=random; if x<p then begin R:=R+1;
qq[R]:=random(100);
end;
if (t mod v=0) then L:=L+1;
until keypressed or (R>100);
(* *) for i:=L to R do writeln(qq(i]);
readin;
end.
1. .
|
|
2. , , ().
3. .
, . , , .
, , .. , . .
. . , . - . ( ). :
procedure RETR;
begin
repeat
if then ;
if then RETR;
if then until or
end.
, , . NxN, . .
39
program tur;
var i, j, ii, jj, n, nn: integer; q: boolean;
dx, dy:array[1..8] of integer; h:array[1..8,1..8] of integer;
(* - *)
procedure try(i,x,:integer; var q:boolean);
var k, u, v: integer; ql: boolean;
begin
k:=0; repeat k:=k+l; ql:=false; u:=x+dx[k]; v:=y+dy(k];
if ((1<=u) and(u<=n) and (1<=v) and (v<=n)) and(h[u,v]=0)
then begin h[u,v]:=i;
(* *')
for ii:=l to n do begin for jj:= 1 to n do
write(h[ii,jj]:5); writeln;
end;
readin;
if i<nn then begin try(i+l,u,v,ql);
if not(ql) then h[u,v]:=0
else ql:=truer;
end
else ql:=true
end;
until (ql) or (k=8);
q:=ql
end; (* *)
begin
dx[l] =2: dx[2]:=l; dx[3]:=-l; dx[4]:=-2; dx[5]:=-2;
dx[6] =-1: dx[7]:=l; dx[8]:=2; dy[l]:=l; dy[2]:=2;
dy[3] =2: dy[4]:=l; dy[5]:=-l; dy[6]:=-2;
dy[7] =-2: dy[8]:=-1;
write (' n: '); readln(n);
for i =1 to n do for j:=1 to n do h[i,j] :=0;
write; (' i,j: '); readln(i,j); nn:=n*n;
h[i,j]:=l; try(2,i,j,q);
if q then begin
for i:=l to n do begin
for j:= 1 to n do write(h[i,j]:5);
writeln;
end;
end ' else writeln(' ');
readln
end.
n = 5 n = 6 . n = 8 .
, , . . '
, , . 3.13.
. 3.13.
S1 S2 . Si 4 : Ai, Bi, Ci, Di, , 90 . , Ai, Bi. Ci, Di A(i-l). B(i-l), C(i-l), D(i-l), :
|
|
Ai: A(i-l) Bi: B(i-l) Ci: C(i-l) Di: D(i-l) | B(i-l) C(i-l) | D(i-l) A(i-l) | | D(i-l) A(i-l) B(i-l) C(i-l) | A(i-l) B(i-l) C(i-l) D(i-l) |
, , , pi/4; , , . U T*pi/4 linep(T,U:integer):
40
program serpinsk;
uses crt,graph;
const sq=512;
var i, xO, yO, x, y, t, u, gd, gm: integer; ch:chart;
procedure linep(t,u:integer);
var xl, yl:integer;
begin x:=x+round(u*cos(t*pi/4));
y:=y-round(u*sin(t*pi/4)); lineto(x,y);
end;
procedure b(i:integer); forward;
procedure (i:integer); forward;
procedure d(i:integer); forward;
procedure a(i:integer);
begin
if i>0 then begin a(i-l); linep(7,u); b(i-l); linep(0,2*u);
d(i-l); linep(l,u); a(i-l)
end end;
procedure b;
begin
if i>0 then begin b(i-l); linep(5,u); c(i-l); linep(6,2*u);
a(i-l); linep(7,u); b(i-l)
end end;
procedure c;
begin
if i>0 then begin c(i-l); linep(3,u); d(i-l); linep(4,2*u);
b(i-l); linep(5,u);C(i-l)
end end;
procedure d;
begin
if i>0 then begin d(i-l); linep(l,u); a(i-l); linep(2,2*u);
c(i-l); linep(3,u); d(i-l) end. end;
begin gd:=0; initgraph(gd, gm, ' ');
u:=sq div 4; x0:=320; y0:=128; i:=0;
repeat
i:=i+l; x0:=x0-u; u:=u div 2; y0:=y0-u;
x:=x0; y:=y0; setcolor(2*i);
moveto(x,y); a(i); linep(7,u); b(i);
linep(5,u); c(i); linep(3,u);
d(i); linep(l,u); delay(2000) until i=5;
settextstyle(0,0,1);
outtextxy(200, 470, ' S1 - S5');
readln; closegraph
end.
1891 . . , . Hi, , H(i-l) , . , .
41
program hilbert;
uses crt,graph;
const sq=448;
var i,x0,y0,x,y,t,u,gd,gm:integer; ch:char;
procedure linep(t,u:integer);
var xl,yl:integer;
begin x:=x+round(u*cos(t*pi/4)); y:=y-round(u*sin(t*pi/4));
lineto (x,y);
end;
procedure b(i:integer); forward;
procedure (i:integer); forward;
procedure d(i:integer); forward;
procedure a(i:integer);
begin
if i>0 then begin d(i-l); linep(4,u); a(i-l); linep(6,u);
a(i-l); linep(0,u); b(i-l)
end end;
procedure b;
begin
if i>0 then begin c(i-l); linep(2,u); b(i-l); linep(0,u);
b(i-l); linep(6,u); a(i-l)
end end;
procedure c;
begin
if i>0 then begin b(i-l); linep(0,u); c(i-l); linep(2,u);
c(i-l); linep(4,u); d(i-l)
end end;
procedure d;
begin
if i>0 then begin a(i-l); linep(6,u); d(i-l); linep(4,u);
d(i-l); linep(2,u); c(i-l)
end end;
begin gd:=0; initgraph(gd, gm, ' '); x0:=320; y0:=240; u:=sq; i:=0;
repeat
i:=i+l; u:=u div 2;
x0:=x0+(u div 2); y0:=y0-(u div 2);
x:=x0; y:=y0; setcolor(2*i);
moveto(x,y); a(i); delay(2000) until i=6;
settextstyle(0,0,1);
outtextxy(220,470, ' HI - 6');
readin; closegraph
end.
1. , ,
|
|
2. .
3. .
4.5.
( )
. () . (, , , , .) . , . , ( ).
, () , . , , .. , , , , , , .
. , , . , :
;
( );
;
( ).
. , . . , . .
: ( ) ( ).
, F ,
a1, 2 n → ak1, ak2akn
F(ak1) < F(ak2) < F(akn)
, .
, . .
. , , ,
var a:array[0..N] of item;
item - (), .
, , , , .
. X.
i:=0;
while (i<=N)and(a[i]<>X) do i:=i+1 end.
, a[N+l]:
a[N+l]:=X;i:=0;
while a[i]<>X do i:=i+l end.
i = N + 1 , , .. .
. [0..n].
42
program poiskl; (* *) const N=8;
type item= integer;
var a: array[0..n] of item; i:integer; x: item;
begin
(* *) for i:=0 to N do
begin writet'Be a[ ',i, ']= '); readln(a[i]);
end;
writeln; write(' x= '); readln(x);
(* *)
i:=0; while (i<=N)and(a[i]<>X) do begin i:=i+l end;
(* *)
if i<=N then write(' ',i, ' ') else write(' ');
readin
end.
. ( , .). . , ( ) .
|
|
L:=0; R:=N; while L<R do
begin
m:=(L+R) div 2;
if a[m]<X then L:=m+l else R:=m;
end;.
, =13, :
[0]=1; [1]=3; [2]=4; [3]=7; [4]=8; [5]=9; [6]=13; [7]=20; [8]=23.
:
1 3 4 7 8 9 13 20 23 -
0 1 2 3 4 5 6 7 8-
L m R
L m R
a[m]=x => m = 6
.
43
program poisk2; (* *)
const N=8;
type item= integer;
var a: array[0..n] of item; i, L, R, m:integer; x: item; f:
boolean;
begin
(* *)
for i:=0 to N do
begin write(' a[',i, '1= '); readln(a[i])
end;
writeln; write(' = '); readln(x);
(* *)
L:=0; R:=N; f:=false;
repeat m:=(L+R) div 2; if a[m]=X then f:=true;
if a[m]<X then L:=m+l
else R:=m;
writeln(m,L,R);
until (L>=R)or(f);
(* *)
if f then write(' ',m, ' ') else write(' ');
readln
end.
. :
var a: array [0.. N] of item
. . : , .
, . , , , , , , , .. () . , i = 2, .
for i:=2 to N do begin
x:=a[i];
< a[l],...,a[i]>
end
, . , . :
i=2 | |||||
i=3 | |||||
i=4 | |||||
i=5 |
a[j]. , a[j] .
44
program sortirov)ca_l;
(* *) const N=5;
type item= integer;
var a: array[l..n] of item; i, j: integer; : item;
begin (* *)
for i:=l to N do begin write(' a[',i,']=');
readln(a[i]) end;
for i:=l to N do begin write(a[i], ' ');
end;
writeln;
(* *).for i:=2 to n do begin
x:=a[i]; j:=i; a[0]:=x; (**)
while x<a[j-l] do
begin
a[j]:=a[j-l); j:=j-l;
end;
a[j]:=x;.
(for k:=l to n do write(a[k.l, ' ') end; writeln;) end;
(* *) for i:=l to N do begin.
write(a[i], ' ');
end;
readln;
end.
. , ( k - var k:integer). .
. , . .
45
program sortirovka_2;
(* *) const N=5;
type item= integer;
var a: array(l..n] of item; i, j, m, L, R: integer; x: item;
begin
(* *) for i:=l to N do
begin write('B a[',i,']= '-); readln(a[i]);
end;
for i:=l to N do
begin write (a[i], ' ');
end;
writeln;
(* *)
for i:=2 to n do begin
x:=a(i]; L:=l; R:=i;
while L<R do begin
m:=(L+R) div 2; if a[m]<=x then L:=m+l else R:=m;
end;
for j:=i downto R+l do a(j] :=a [j-1];
a[R]:-x;
end;
(* *)
for i:=l to N do
begin write(a[i], ' ');
end;, readln;
end.
.. , , 4 ( ), , 2 , () .
, , . , , () , .. [-r..n], r - .
. . , . , ..
i=2, min= 11 | |||||
i=3.min=12 | |||||
i=4, min=13 | |||||
i=5,min=15. |
46
program sortirovka_3;
(* - *)
const N=8; t=4;
type item= integer;
var a: array[-9..n] of item; i, j, k, s:integer; x: item;
m: l..t; h:array [l..t] of integer;
begin
(* *)
for i:=l to N do
begin write(' a[',i, ']=') readln(a[i])
end;
for i:=l to N do begin write(a[i], ' ');
end;
writeln;
(* *)
h[l]:=9; h[2]:=5; h[3]:=3; h[4]:=1;
for m:=l to t do
begin k:=h[m]; s:=-k; (* *)
for i:=k+l to n do
begin x:=a[i], j:=ik; if s=0 then s:=-k;- s:=s+l;
a[s]:=x; while x<a[j] do begin a[j+k]:=a(j]; j:=j-k;
end;
a[j+k]:=x
end;
end;
(* *)
for i:=l to N do begin write(a[i], ' ');
end;
readln;
end.
47
program sortirovka 4;
(* *)
const N=5;
type item= integer;
var a: array[l..n] of item; i, j, k: integer; x: item;
begin
(* *)
for i: =1 to N do
begin write(' a[', i, ']='); readln(a[i]);
end;
for i:=l to N do begin write(a[i],' ');
end;
writeln;
(* *)
for i:=l to n-1 do
begin k:=i; x:=a[i]; (* *)
for j:=i+l to n do (* a[i]...a{n]*)
if a[j]<x then begin k:=j; x:=a[k)
end;
a(k]:=a[i]; a[i]:=x;
end;
(* *)
for i:=l to N do begin write(a[i], ' ');
end;
readln;
end.
. . . n/2 . n/4 .. n-1 , . , , (.). hL...hR, , *
hi<=h2i hi<=h2i+l, i=L,...,R/2.
h, :
h h-1;
h h-1;
. ,
27 9 14 8 5 11 7 2 3.
, , , a[i] a[2i] a[2i+l]. , [6]=11,[7]=7, [3]=14 (.3.14).
. 3.14.
, 2i > n, a[i] , .
:
1) [1] [], 3 9 14 8 5 11 7 2 27;
2) n 1, . . n=n-l, 27 ;
3) , , , , , ;
4) 1, 2, 3 , n= I.
( 3). : a[i], a[2i] a[2i+l].
.
48
program sortirovka_5;
(* - *) const N=8;
type item= integer;
var a: array(l..n] of item; k, L, R: integer; x: item;
procedure sift(L,R:integer);
var i, j: integer; x,y: item;
begin i:=L; j:=2*L; x:=a[L]; if (j<R) and (a[j]<a[j+1]) then j:=j+l;
while (j<=R)and(x<a[j]) do begin y:=a[i]; a[i]:=a[j];
[j]:=y a[i]:=a[j]; i:=j; j:=2*j;
if (j<R)and(a[j]<a(j+l]) thenj:=j+l;
end;
end;
begin
(* *) for k:=l to N do begin write(' a[',k,']=');
readln(a[k]);
end;
for k:=l to N do begin write(a[k], ' ');
end;
writeln;
(* *) (* *) L:=(n div 2) +1; R:=n; while L>1 do begin L:=L-1; SIFT(L,R);
end;
(**) while R>1 do begin x:=a[l]; a[l]:=a[R]; a(R]:=x;
R:=R-1; SIET(1,R);
end;
(* *) for k:=l to N do begin write(a[k],' ');
end;
readin;
end.
. . , : () . , ( ). .
49
program 5ortirovka_6;
(* - *)
const N=5;
type item= integer; var a: array(l,.n] of item; i, j: integer;
x: item;
begin (* *)
for i:=l to N do begin write(' a[',i,']= ');
readln(a(i]);
end;
for i:=l to N do begin write(a[i], ' ');
end;
writeln;
(* *) for i:=2 to n do for j:=n downto i do begin
if a[j-l]>a[j] then begin x:=a [j-1];a [j-1]:=a[j]; a[j]:=x;
1 end;
end;
(* *) for i:=l to N do begin write(a[i], ' ');
end;
readln;
end.
, , , , .. . , , .
, . .
50
program sortirovka_7;
(* - *) const N=5;
type item= integer;
var a: array[l..n] of item; i, j, k, L, R: integer; x: item;
begin (* *)
for i:=l to N do begin write(' a(',i,']=');
readln(a[i]);
end;
for i:=l to N do begin write(a[i],' end;
writeln;
(* *) L:=2; R:=n; k:=n;
repeat
for j:=R downto L do begin
if a[j-l]>a[j] then begin x:=a[j-l];a[j-l]:=a[j];
a(j]:=x; k:=j
end;
end;
L:=k+l;
for j:=L to R do begin
if a[j-l]>a[j] then begin x:=a(j-l];
a[j-l]:=a[j]; a[j]:=x; k:=j end;
end;
R:=k-l;
until L>R;
(* *)
for i:=l to N do
begin write(a[i],' ');
end; readln;
end.
, , . () , . , (i = 1), - (j = n). a[i] <= a[j], j = j - 1 . j , a[i] > a[j]. i = i + 1. i , a[i] > a[j]. j. j i, , i= j. , , , - .
.. , . .
51
program sortirovka_8;
(* - *) const N=8;
type item= integer;
var a: array(l..n] of item; i: integer;
procedure sort(L,R: integer);
var i, j: integer; x, y: item;
begin
i:=L; j:=R; x:=a[(L+R) div 2];
repeat
while a[i]<x do i:=i+l; while x<a[j] do j:=j-l;
if i<=j then begin y:=a[i]; a[i]:=a[j];
a[j]:=y; i:=i+l; j:=j-1;
end;
until i>j;
if L<j then SORT(L,j); if i<R then SORT(i.R); ' end;
begin,. (* *) for i:=l to N do begin write("Be a[',i, ']=');
readln(a[i]);
end;
for i:=l to N do begin write(a[i],' ');
end;
writeln;
(* *) SORT(l,n); (* *) (* *) for i:=l to N do begin write(a[i],' ');
end;
readln;
end.
. , ( ). , , (, .).
.
, - . , , . . , . , . , , , \ , . , . . . nil .
52
program sortirovka_faila_l;
( ) const N=8;
type item= integer;
var a: array[l..n] of item; i,k: integer; x,y: item;
fl,f2: text; (file of item);
begin
( } for i:=l to N do begin write(' [ ',i,']=');
readin(a[i]);
end;
writein; assign(fl, 'datl.dat'); rewrite(fl);
assign(f2, 'dat2.dat'); rewrite(f2);
( ) for i:=l to N do begin writein(fl,a[i]);
end;
( ) for k:=l to (n div 2) do
begin ( ) reset(fl); readin(fl,x);
for i:=2 to n do begin readln(fl,y);
if x>y then writein(f2,y) else begin writein(f2,x); x:=y;
end;
end;
writein(f2,x);
( ) rewrite(fl); reset(f2); readin(f2,x);
for i:=2 to n do begin readin(f2,);
if x>y then writein(fl,y) else begin writein(f1,x); x:=y;
end;
end;
writeln(fl,x); rewrite(f2);
end;
( } reset(fl);
for i:=l to N do readin(f1,a[i]);
for i:=l to N do begin write(a[i], ' ');
end;
close(fl); close(f2); readin;
end.
[1..]. , .
, ( ) , ( ). ( ), , . , , . , .
, , , . , , .. , ( ) ' .
, , . i j , k L - , . ( ) , , \,..., +..., ^ . . . , ( ), , q . .
53
program sortirovka_faila_2;
( } const N=8;
type item= integer; var a: arrayd.,2*n] of item;
i, j, k, L, t, h, m, p, q,^r: integer; f: boolean;
begin
( }
for i:=l to N do begin write(' [ ',i, ']='}!
readln(a[i]);
end;
writein;
( ) f:=true; p:=l;
repeat
h:=l; ^; if f then begin
i:=l; j:-n;k:=n+l; L:=2*n end else begin k:=l; L:=n;i:=n+l; j:-2*n
end;. repeat
if m>=p then q:=p else q:m; m:=m-q;
if m>=p then r:=p else r:=m; m:=in-r;
while (q<>0) and (r00) do begin
if a[i]<a(j] then begin a[k]:=a(i]; k:=k+h; i:=i+l;q:=q-l
end else
begin a[k]:=a[j]; k:=k+h; j:=j-l;r:=r-l end;
end;
while r>0 do begin a[k]:=atj]; k:k+h; j:=j-l; r:r-l;
end;
while q>0 do begin
a[k]:=a[i]; k:k+h; i:=i+l; q:=q-l;
end;
h:=-h; t:=k;k:=L; L:=t;
until m=0;
f:=not(f); p:2*p;
until p>=n;
if not(f) then for i:=l to n do a[i]:=a[i+n];
( }. for i:=l to N do begin write(a[i], ' ');
end;
readin;
end.
, , , , , .
, , . , , , , , .. .
1. ? ?
2. ?
3. ? ?
4. ?
5. ?
6. ?
7. :
) ;
) ;
) .