.


:




:

































 

 

 

 


,




 

, . . , , , . , , , , .

, .. , , . , . .

. , ( , ) .

 

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. :

) ;

) ;

) .





:


: 2016-11-12; !; : 385 |


:

:

80% - .
==> ...

1761 - | 1616 -


© 2015-2024 lektsii.org - -

: 0.448 .