barikov brovin pluscheva progr

106
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования «Санкт-Петербургский государственный университет аэрокосмического приборостроения» Кафедра Вычислительных систем и сетей (№44) Программирование на языках высокого уровня Учебное пособие для студентов заочной формы обучения Санкт-Петербург 2003

Upload: wloch

Post on 22-Nov-2015

92 views

Category:

Documents


2 download

DESCRIPTION

programming

TRANSCRIPT

  • -

    (44)

    - 2003

  • 2

    : .., .., .. : - ; . . ...

    , , , .

    , 220100 " , , " .

    - . -

    (). 2003. 6084 1/16 6,6 .. .-.. 6,6 150 . . 190000, , .., 67

  • 3

    .................................................................................................................................................... 4 1 , .................................................................................................................................................... 4 2 ............................................................................................................. 4 3 ................................................................................................................. 5 4 ............................................ 9

    1. ............................................................................................. 10 2. ........................................................................................ 20 3. ........................................................................................................ 24 4. .................................................................................................... 34 5. ......................................................................................... 40 6 ...................................................................................... 49 7. .......................................................................... 61 8. ..................................................................................... 68

    5 ............................................ 76 6 ........................................... 82 7 ................................................ 94 8 ........................................................................................................... 98 9 - ............................................................. 101 . ............................................................................ 102

  • 4

    , 220100 , , , . , .

    , , . , .

    , , , .

    , , 4.

    1 ,

    .

    . . . . .

    2 18 96 14 9 - 13 36 60 * *

    3 18 67 16 6 12 11 45 22 * *

    4 18 87 9 - 9 18 69 *

    2

    ,

    , ,

    .

    .

    :

    - ,

  • 5

    ;

    - ,

    (Turbo Pascal, Object Pascal, C++ )

    ,

    ;

    - ,

    .

    3

    :

    1.

    . . . . . . . . : , , , , . . : , , . . . .

    2.

    .

    . .

    .

    . . :

    . .

    : , , . :

    . : .

    . .

  • 6

    3.

    .

    , , , , , .

    . .

    .

    : ,

    , , . :

    , , .

    : , , .

    , .

    .

    .

    4.

    . ,

    : , ,

    . .

    . .

    . . :

    , , , ,

    .

    . . :

    , ,

    , .

    .

    .

    . . .

    .

    . , , .

    .

    .

    . .

    . .

    . : ,

    . : .

    . . .

    : c, , .

  • 7

    .

    5.

    . , , - . .

    : , , . . . : , , . : , , , . . . .

    . .

    . .

    . : -,

    -, -.

    . .

    . . .

    . .

    . .

    .

    . .

    : .

    .

    . : ,

    , .

    .

    . : , ,

    , . .

    . :

    . .

    . . .

    .

  • 8

    6. .

    . : , , , , , , , , . . , . . , , . .

    1.

    4 - - 4 20

    2.

    4 - - 6 30

    3.

    6 9 6 6 20

    4.

    4 6 6 6 20

    5.

    6 9 - 5 31

    6.-

    6 - - 6 30

    30 24 12 33 151

  • 9

    4

    , , .

    1. 1. .

    2. 2. .

    3. 3. .

    4. 4. .

    5. 5. .

    6. 6. .

    7. 7. .

    8. 8. .

    , , , , . . .

  • 10

    1.

    : - 3, - 4.

    :

    , .

    ,

    .

    1. : , .

    2. : , , ( 3 6).

    3. . 4. . 5. Real

    . () . 6. .

    , .

    7. : , , , , .

  • 11

    1) Y

    X

    2) Y

    X

    3) Y

    X

    4) Y

    X

    5) Y

    X

    6) Y

    X

  • 12

    7) Y

    X

    8) Y

    X

    9) Y

    X

    10) Y

    X

    11) Y

    X

  • 13

    12) Y

    X

    0

    13) Y

    X

    0

    14) Y

    X

    0

    15) Y

    X

    0

    16) Y

    X

    0

    17) Y

    X

    0

  • 14

    18) Y

    X

    0

    19) Y

    X

    0

    21) Y

    X

    0

    20) Y

    X

    0

    22) Y

    X

    0

  • 15

    24) Y

    X

    26) Y

    X

    0

    23) Y

    X

    25) Y

    X

    0

    0

    27) Y

    Y=R/2

    X

    R/2

    0

    28) Y

    Y=R/2

    X

    R/2

    0

  • 16

    30) Y

    Y=R/2

    X

    R/2

    0

    29) Y

    Y=R/2

    X

    R/2

    0

    31) Y

    Y=X2

    Y=1

    0 X

    32) Y

    Y=X2

    Y=1

    0 X

    33) Y

    Y=X2

    Y=1

    0 X

    34) Y

    Y=X2

    Y=1

    0 X

  • 17

    35) Y

    0

    X

    -1 Y=-1

    Y=-X2

    36) Y

    0

    X

    -1 Y=-1

    Y=-X2

    37) Y

    0

    X

    -1 Y=-1

    Y=-X2

    38) Y

    0

    X

    -1 Y=-1

    Y=-X2

    39) Y

    R Y=X

    -R R X

    -R

    0

  • 18

    :

    Y

    R

    R/2

    0 X

    X,Y

    X=0 Y=0

    (.) . .

    X2+Y

    2>R

    2

    y>=R/2

    y

  • 19

    Program Tochka;

    {

    : x, y

    : s - }

    Var x, y: Real;

    s: String;

    Begin

    { }

    Write( :);

    ReadLn(x, y);

    { }

    If (x = 0) And (y = 0)

    Then WriteLn ( );

    Else Begin

    If x * x + y * y > r * r { ?}

    Then s:=

    Else { }

    If y >= r / 2 { ?}

    Then s:=

    Else { }

    If y

  • 20

    2.

    : - 3, - 4.

    :

    , .

    ,

    .

    1. : , .

    2. :

    ,

    - , ,

    .

    3. . 4. . 5. .

    . 6. .

    , .

    7. : , , , , .

  • 21

    1

    , .

    2

    k- .

    3

    .

    4

    .

    5

    .

    6

    .

    7

    (, , , ), .

    8

    (, , , ) .

    9

    , .

    10

    (, , , , , ), (, , , , , , ).

    11

    , (, , , , ).

    12

    k 1 99 k , , k .

  • 22

    13

    k k , k.

    14

    d 1 999, , .

    15

    d 1 99, , .

    16

    . .

    17

    (, , , ) (., ., ., ., ., .).

    18

    (, , , ). (, , , ). .

    19

    .

    20

    , y (), m (), d () .

    21

    d (), m (), y() d1, m1, y1 .

    22

    , d (), m ().

    23

    d (), m () k- .

  • 23

    24

    , 1 wd1, wd , d (), m ().

    25

    , 1 wd1, , 13- .

    CASE

    Program PloFig;

    { .

    : t - ,

    a,l,h,r - .

    : s - . }

    Var t:Byte;

    a,l,h,r,s:Real;

    Begin { }

    WriteLn(' :');

    Write('1-,2-,3-? ->');

    ReadLn(t);

    If (t3)

    Then Begin WriteLn(' !');

    Write( Enter ->);

    ReadLn; Halt;

    End;

    { }

    Case t Of

    1: Begin Write(' ? ->');

    ReadLn(a);

    s:=a*a;

    End;

    2: Begin Write(' ? ->');

    ReadLn(l,h);

    s:=l*h;

    End;

    3: Begin Write(' ?->');

    ReadLn(r);

    s:=Pi*r*r;

    End;

    End;

    WriteLn(' : ',s:10:5);

    End.

  • 24

    3.

    : - 3, - 4.

    : , .

    ,

    , 3 : - ( ), - ( ), - ( ).

    1. : , .

    2. . 3. .

    . 4. . 5. For

    . , : While Repeat.

    6. . .

    7. . 8. : ,

    , , , .

  • 25

    1

    1. X, m S:

    12

    ,...5,3,1

    2m

    i

    XiS

    2. { nY } n , Yn

    4,3,2);sin()sin(25.0 21 nYYY nnn

    Y0, Y1 .

    Yn - Yn-1

  • 26

    2. {Yn} n , Y0=0, Yn

    ...3,2,1;1

    1

    1

    nY

    Yn

    n

    Y0 .

    Yn Yn-1

  • 27

    8

    1. X S:

    )127(...)7()3()1(

    )128(...)8()4()2(

    XXXX

    XXXXS

    2. {Yn} n , Yn

    ...4,3,2;sinsin1

    1

    2

    2

    1

    2

    nYY

    Y

    nn

    n

    Y0, Y1 .

    Yn Yn-1

  • 28

    12

    1. , 7, [A,B].

    2. )1

    1(1 nn Y

    P

    {Yn},

    ,...4,3,2);1(;1 11 nYnYY nn

    nY

    1.

    13

    1. , 5 3, [A,B].

    2. K A - k- A,

    ,...3,2,1;1

    ;1

    1

    10

    nXk

    AX

    k

    kXAX

    k

    n

    nn

    nX , |Xn Xn-1| <

    14

    1. , 7 4, [A,B]. 2. X-q*sin(X)=m, 0

  • 29

    16

    1. m, Ym, Y0, Y1,Y2, Yi

    ,...5,4,3;)( 232 iYYtgY iii ,m

    2. )1(*2)1(*3

    *5lim

    22 nn

    n

    n .

    17

    1. m,

    m

    i

    im YS1

    ),5.0ln( Y0, Y1, Y2, Yi

    ,...5,4,3;*2 32

    21 iYYYY iiii ,m

    2. 1*2

    5lim

    23

    3

    nn

    n

    n .

    18

    1. m, Ym, Y0, Y1, Yi

    ,...4,3,2;3

    *2 21

    iYY

    Y iii ,m

    2.

    12 )1.1)(sin(*

    1

    n nn .

    19

    1. m, Ym , Y0 ,Y1,Y2, Yi

    Yi= sin2 (Yi-1) + cos

    2 (Yi-3); i=3,4,5, ,m

    2.

    1 )(*

    1

    n Ann .

    20

    1. m,

    m

    i

    im YS1

    , Y0, Y1, Y2, iY

    ;cos()sin( )31 iii YYY i=3,4,5,,m

    2.

    1 )1*5(*)1*5(

    1

    n nn .

  • 30

    21

    1. m,

    m

    i

    im YS1

    2 Y0 ,Y1, Yi

    ;)cos()sin( 21 iii YYY i=2,3,4,,m

    2.

    12 1*2

    )1(n

    n

    n

    n .

    22

    1. {Xi} {Yi} . X20 ,Y20,

    2.2;6.1

    ;5.3;2

    )5(*

    01

    0

    1

    1

    YXY

    XYX

    X

    ii

    ii

    i

    2.

    1

    0 )30cos(

    n n

    n

    .

  • 31

    FOR

    Program Fibon;

    { .

    : n - .

    : fn - .}

    Var n,i:Byte; { 0..255 } { i- }

    fn,fi,fi1,fi2:Longint;

    {fi- , fi1- ,

    fi2- .}

    Begin {$R+}

    Write(' ? '); ReadLn(n);

    If n>46

    Then Begin WriteLn(' !');

    Write( Enter->);

    ReadLn; Halt;

    End;

    If n

  • 32

    WHILE

    Program ProSum;

    { }

    { : c - .

    : p - , s - .}

    Var c,p,s,a,b:Real;

    i,j:Byte; {i- , j-

    a- , b- }

    Begin WriteLn(' 0',c:6:3,' = ',s:7:5);

    End.

  • 33

    REPEAT WHILE

    Program KvadrKoren;

    {

    .

    : x - , eps - .

    : y - }

    Var x,y,yp,eps:Real;

    {y - ,

    yp - }

    Begin Write(' >0 : ');

    ReadLn(x);

    If x);

    ReadLn; Halt;

    End;

    Write(' 0

  • 34

    4.

    : - 3, - 4.

    :

    ;

    .

    , .

    1. : .

    2. : , , .

    3. : .

    4. . 5. . 6. .

    c . 7. , .

    , , .

    8. : , , , , .

  • 35

    1

    b1,b2,,b2n. x1,x2,,xn y1,y2,,yn, : b1,b3,,b2n-1 b2,b4,,b2n.

    2

    a1,a2,,am. . , i- , ia , 1 .

    3

    :

    naaaaaaaaaa ...,...,,, 321321211 a1,a2,,an.

    4

    x1,x2,,xn , .

    5

    a1,a2,,an b1,b2,,bn. , :

    nn bababa ,,...,,,, 2211 .

    6

    x1,x2,,xm. , , b.

    7

    x1,x2,,xn y1,y2,,yn. : xi yi xi, yi.

    8

    a1,a2,,an. , , , . .

    9

    , x1,x2,,xn (n>=2) , x2,x3,,xn,x1.

  • 36

    10

    a1,a2,,an. , , , , b.

    11

    b1,b2,,bn, : 2

    i

  • 37

    19

    : 1,2,,n, , . .

    20

    x1,x2,,xn . .

    21 1>2>>n i,i+1,,i+k , .

    22

    b1,b2,,b2m. , : b2m,b1,b2m-1,b2, ,bm+1,bm.

    23 x1,x2,,xn. , , .

    24 1,2,,2n. , : 1,n+1,2,n+2,,n,a2n.

    25

    1,2,,n. , .

    26 n .

    27 x1,x2,,xn y1,y2,,ym z1,z2,,zn+m, . . .

    28 n .

  • 38

    29

    b1,b2,,bm.

    30

    1,2,,n.

    31

    a1,a2,,an, .

    32 2 a1,a2,,an b1,b2,,bn. nnbababa ...2211 .

    33

    2222

    1 ... naaa , a1,a2,,an

    .

    34 , , a1, a2,, am .

    35 y1

  • 39

    Program MinMaxMas;

    {

    : k - ,

    M - .

    : M - .}

    Const R=10; { }

    Type Tind=1..R; { }

    Tmas=Array [Tind] Of Integer; { }

    Var k,i,nmin,nmax:Tind; {1..R}

    M:Tmas; { }

    min,max:Integer; { }

    Begin

    {$R+} { }

    Write(' ',R,': ');

    ReadLn(k);

    { }

    Write(' ',k,' :');

    For i:=1 To k

    Do Read(M[i]); { }

    { }

    min:=M[1]; nmin:=1; { }

    max:=M[1]; nmax:=1; { }

    For i:=2 To k { }

    Do If M[i]max { }

    Then Begin max:=M[i]; { }

    nmax:=i { }

    End;

    { }

    M[nmin]:=max; M[nmax]:=min;

    { }

    WriteLn(' :');

    For i:=1 To k

    Do Write (M[i],' '); { }

    WriteLn;

    End.

  • 40

    5.

    : - 3, - 4.

    : , ,

    ;

    , .

    , , .

    1. :

    ) ; ) . 2.

    . 3. : , ,

    , , . 4. :

    . . 5. .

    . 6. .

    . 7. , . 8. ,

    . .

    9. : , , , ,

  • 41

    : 1

    : 3

    : 5

    :

    2

    : 4

    : 6

  • 42

    : 7

    : 9

    : 11

    : 10

    : 8

    :

    12

  • 43

    : 13

    :

    15

    :

    17

    : 18

    : 16

    :

    14

  • 44

    1 , .

    2 , .

    3 , .

    4 , .

    5 , .

    6 , .

    7

    : , , , .

    8 , .

    9 , .

    10

    , . 11 , .

  • 45

    12

    .

    13 : , , , .

    14 , .

    15 , .

    16

    : , , , .

    17

    : , , , .

    18

    .

    19

    , .

    20

    , .

  • 46

    Program MatrInt;

    { :

    }

    Uses Crt; { }

    Const R=10; { () }

    Type Tind=1..R; { }

    Tvect=Array[Tind] Of Integer; { }

    Tmatr=Array[Tind] Of Tvect; { }

    {$R+}

    Procedure InMatr(kStr,kStb:Tind;Var M:Tmatr);

    { .

    : kStr - ,

    kStb - .

    : M - .}

    Var i,j:Tind; { }

    Begin WriteLn(' :');

    For i:=1 To kStr

    Do Begin

    For j:=1 To kStb

    Do Read(M[i,j]);

    ReadLn;

    End;

    End;{InMatr}

    Function NomMin(kStr,kStb:Tind; Const M:Tmatr):Tind;

    { .

    : kStr - ,

    kStb - ,

    M - .

    : NomMin - .}

    Var i,j,nmin:Tind; min:Integer; { }

    Begin

    min:=M[1,1]; nmin:=1;

    For i:=1 To kStr

    Do For j:=1 To kStb

    Do If M[i,j]

  • 47

    Function NomMax(kStr,kStb:Tind; Const M:Tmatr):Tind;

    { .

    : kStr - ,

    kStb - ,

    M - .

    : NomMax - .}

    Var i,j,nmax:Tind; max:Integer; { }

    Begin

    max:=M[1,1]; nmax:=1;

    For i:=1 To kStr

    Do For j:=1 To kStb

    Do If M[i,j]>max

    Then Begin max:=M[i,j];

    nmax:=i;

    End;

    NomMax:=nmax;

    End; {NomMax}

    Procedure ObmenStr(kStr,kStb:Tind; Var M:Tmatr);

    {

    .

    : kStr - ,

    kStb - ,

    M - .

    : M - .}

    Var strM:Tvect; nmin,nmax:Tind; { }

    Begin

    nmin:=NomMin(kStr,kStb,M);

    nmax:=NomMax(kStr,kStb,M);

    If nminnmax

    Then Begin strM:=M[nmin];

    M[nmin]:=M[nmax];

    M[nmax]:=strM;

    End;

    End; {ObmenStr}

    Procedure Okno(x1,y1,x2,y2,cf,ct:Byte);

    { }

    Begin

    Window(x1,y1,x2,y2); { }

    TextBackGround(cf); { }

    TextColor(ct); { }

    ClrScr; { }

    End;{Okno}

  • 48

    Procedure OutMatr(kStr,kStb:Tind; Const M:Tmatr);

    { .

    : kStr - ,

    kStb - ,

    M - .}

    Var i,j:Tind; { }

    Begin

    For i:=1 To kStr

    Do Begin For j:=1 To kStb

    Do Write(M[i,j]:3);

    WriteLn;

    End;

    End;{OutMatr}

    Var n,m,nStb:Tind; Matr:Tmatr;

    Begin

    Okno(1,1,80,25,0,15); { }

    Write(' ? '); ReadLn(n,m);

    Okno(1,6,38,20,2,15); {

    }

    InMatr(n,m,Matr); { }

    WriteLn(' ');

    OutMatr(n,m,Matr); { }

    ObmenStr(n,m,Matr); { }

    Okno(40,6,80,20,3,15); {

    }

    WriteLn(' ');

    OutMatr(n,m,Matr); { }

    ReadLn;

    End.

  • 49

    6

    : - 3, - 4.

    : ,

    ; ,

    ; ;

    .

    5 . . !

    1. . 2.

    . 3. ,

    , , . . .

    4. . .

    5. .

    6. : , , , ,

  • 50

    1

    . ; - , . , (). . .

    2

    . ; - , . , . . .

    3

    . ; - , . , . .

    4

    . ; - , . , . .

    5

    . ; - , . , . .

    6

    . ; - , . , . .

  • 51

    7

    . ; - , . , (). . .

    8

    . ; - , . , .

    9

    . ; - , . .

    10

    . ; - , . , . .

    11

    . ; - , . , . .

    12

    . ; - , . , . .

    13

    . ; - , . , . .

  • 52

    14

    . ; - , . , : . .

    15

    . ; - , . , : (a, ab, abc, abcd,). .

    16

    . ; - , . , : (z, yz, xyz,). .

    17

    . ; - , . , : . .

    18

    . ; - , . , : . .

    19

    . ; - , . , : . .

  • 53

    20

    . ; - , . , , : . .

    21

    . ; - , . , , : . .

    22

    . ; - , . , , : . .

    23

    . ; - , . , , : . .

    24

    . ; - , . , , : . .

  • 54

    25

    . ; - , . , , : . .

    26

    . ; - , . , , : . .

    27

    . ; - , . , , : , . .

    28

    . ; - , . .

    29

    . ; - , . , ( ) , . .

    30

    . ; - , . , .

  • 55

    31

    . ; - , . , . .

    32

    . ; - , . .

  • 56

    Program FileText;

    { }

    Uses Crt; { Crt}

    Procedure Exist(Var nameFT:String);

    { }

    Var ch:Char;

    FT:Text;

    Begin

    Assign(FT,nameFT);

    {$I-} { -}

    Reset(FT);

    {$I+} { -}

    If IOResult=0

    Then Begin

    WriteLn(' !');

    Write(' ? Y/N ->');

    ReadLn(ch);

    If ch In ['n','N','','']

    Then Repeat

    WriteLn(' :');

    ReadLn(nameFT);

    Assign(FT,nameFT);

    {$I-}

    Reset(FT);

    {$I+}

    If IOResult=0

    Then Begin

    WriteLn(' !');

    Write(' ? Y/N->');

    ReadLn(ch);

    End;

    Until (IOResult0)Or(ch In['y','Y','','']);

    End;

    End;

    Procedure SozdFT(Const nameFT:String);

    { }

    Var

    FT:Text;

    i:Byte;

    st:String;

    Begin

  • 57

    Assign(FT,nameFT);

    ReWrite(FT); { }

    Write(' . ');

    WriteLn(' - .');

    i:=0;

    WriteLn(' ',i+1,'- :');

    ReadLn(st); { }

    While st'' { }

    Do Begin

    WriteLn(FT,st); { }

    Inc(i);

    WriteLn(' ',i+1,'- :');

    ReadLn(st);

    End;

    WriteLn(' ',i,' ');

    Close(FT); { }

    End;

    Procedure ProsmFT(Const nameFT:String);

    { }

    Var st:String;

    FT:Text;

    Begin

    Assign(FT,nameFT);

    Reset(FT); { }

    If Eof(FT) Then Begin

    Writeln(' !');

    WriteLn(' Enter ->');

    ReadLn; Halt;

    End;

    Writeln(' :'); Writeln;

    While Not Eof(FT) { :}

    Do Begin

    Readln(FT,st); { }

    Writeln(st); { }

    End;

    Writeln;

    Close(FT); { }

    End; {ProsmFT}

    Procedure RedaktFT(Const nameF1,nameF2:String);

    { .

  • 58

    : F1 - .

    : F2 - .}

    Procedure UdalLP(Var st:String);

    { .

    : st- , .

    : st - .}

    Var L,i:Byte;

    Begin

    L:=Length(st); { }

    i:=1; { }

    While i

  • 59

    Var L,p1,p2:Byte;

    {L - ,

    p1,p2 - }

    sl1,sl2:String;{ }

    flag:Boolean; { }

    Begin

    L:=Length(st); { }

    Repeat

    flag:=FALSE; { }

    p1:=1; sl1:=Slovo(p1,st); { }

    While p1+Length(sl1)

  • 60

    { }

    Var nameF1,nameF2:String; { }

    Begin

    ClrScr; { }

    Write(' : ');

    ReadLn(nameF1);

    Exist(nameF1);

    SozdFT(nameF1); { }

    Write(' '); ProsmFT(nameF1);

    Write(' : ');

    ReadLn(nameF2);

    Exist(nameF2);

    RedaktFT(nameF1,nameF2); { }

    Write(' '); ProsmFT(nameF2);

    ReadLn;

    End. {FileText}

  • 61

    7.

    : - 3, - 4.

    : ,

    ;

    ; ;

    .

    5, . !

    1. . 2.

    . 3.

    . 4. : ,

    , , , . 5.

    . 6.

    . 7. : ,

    , , , .

  • 62

    1

    2

    . .

    3

    .

    4

    5

    . .

    6

    7

    8

    9

    .

  • 63

    10

    11

    12

    13

    14

    . . 1 .

    15

    16

    17

    18

    19

    20

    21

  • 64

    Program FileZap;

    { }

    Const MAX_DL=15; { }

    KOL_OC=3; { }

    Type Tzap=Record

    fam:String[MAX_DL]; {}

    OC:Array[1..KOL_OC] Of 0..5; {}

    End;

    Tfile=File Of Tzap;

    Function FileExist(Const nameF:String):Boolean;

    { .

    : nameF - .

    : FileExist - .}

    Var F:File; { }

    Begin Assign(F,nameF);

    {$I-} { -}

    Reset(F); { }

    {$I+} { -}

    If IOResult=0 { ?}

    Then Begin FileExist:=TRUE; Close(F); { }

    End

    Else FileExist:=FALSE;

    End; {FileExist}

    Procedure SozdFZ(Const nameF:String);

    { .

    : nameF - .}

    Var z:Tzap; j:Byte; otv:Char; FZ:Tfile;

    Begin If FileExist(nameF) { ?}

    Then Begin WriteLn(' ',nameF,' !');

    Exit; { }

    End;

    Assign(FZ,nameF);

    Rewrite(FZ); { }

    WriteLn(' :');

    Repeat Write(' ? '); ReadLn(z.fam);

    Write(' ? '); For j:=1 To KOL_OC

    Do Read(z.OC[j]); ReadLn;

    Write(FZ,z); { }

    Write(' ? '); ReadLn(otv);

    Until Not ( otv In ['','','Y','y']);

  • 65

    Close(FZ); { }

    End; { SozdFZ }

    Procedure ProsmFZ(Const nameF:String);

    { .

    : nameF - .}

    Var z:Tzap; j:Byte; FZ:Tfile;

    Begin If Not FileExist(nameF) { ?}

    Then Begin WriteLn(' ',nameF,' !');

    Exit;

    End;

    Assign(FZ,nameF);

    Reset(FZ); { }

    If Eof(FZ) { ?}

    Then Begin WriteLn(' ',nameF,' !');

    Exit;

    End;

    WriteLn(' : ',nameF);

    While Not(Eof(FZ)) { }

    Do Begin Read(FZ,z); { }

    Write(z.fam,' ':MAX_DL-Length(z.fam)+1);

    For j:=1 To KOL_OC

    Do Write(z.OC[j]:3); WriteLn

    End;

    Close(FZ); { }

    End; {ProsmFZ}

    Procedure SortFZ(Const nameF:String);

    {

    .

    : nameF - .}

    Function SumB(z:Tzap):Byte;

    { .

    : z - .

    : SumB - .}

    Var s,j:Byte;

    Begin s:=0;

    For j:=1 To KOL_OC

    Do s:=s+z.OC[j];

    SumB:=s

    End; {SumB}

  • 66

    Var z1,z2:Tzap; i:Word; flag:Boolean; FZ:Tfile;

    nkz:Word; { }

    Begin

    If Not FileExist(nameF) { ?}

    Then Begin WriteLn(' ',nameF,' !');

    Exit;

    End;

    Assign(FZ,nameF);

    Reset(FZ); { }

    nkz:=FileSize(FZ)-1; { }

    flag:=TRUE; { }

    While (nkz>0) and flag { }

    Do Begin

    flag:=FALSE; { }

    For i:=0 To nkz-1 { }

    Do Begin

    Seek(FZ,i);

    Read(FZ,z1,z2);{ }

    If SumB(z1)

  • 67

    End;

    End;

    End; {UsechFZ}

    { }

    Var nameFZ { }

    kStud:Word; { }

    r:0..4; { } {$R+}

    Begin

    WriteLn{ :}

    ReadLn(nameFZ);

    Repeat

    WriteLn(' !');

    WriteLn('1 - , 2 - ,');

    Write('3 - , 4 - , 0 - : ');

    ReadLn(r);

    Case r Of

    1: SozdFZ(nameFZ); { }

    2: SortFZ(nameFZ); { }

    3: ProsmFZ(nameFZ); { }

    4: Begin Write(' ? ');

    ReadLn(kStud);

    UsechFZ(nameFZ,kStud); { }

    End;

    End; {Case}

    WriteLn;

    Until r=0;

    End.

  • 68

    8.

    : - 3, - 4.

    :

    ;

    .

    5 .

    1. . 2.

    . 3. , ,

    , . 4.

    . 5. : ,

    , , , .

  • 69

    1

    L L1 L2: , .

    2

    L E1 E, L.

    3

    L 1 , L.

    4

    L 1 2.

    5

    L, , E , .

    6

    L.

    7

    L .

    8

    L .

    9

    L , .

    10

    L .

    11

    L .

  • 70

    12

    L, , .

    13

    , L1 L2.

    14

    , L .

    15

    L1 L2.

    16

    L1 L.

    17

    L1 L2.

    18

    L L1, L.

    19

    L, , L1 L2.

    20

    L, , L1 L2.

    21

    L, , L1, L2.

    22

    L, , L1 L2, .

    23

    L1 L2 , L.

  • 71

    24

    L1 L2 L1, L1 L2.

    25

    .

    26

    .

    27

    , .

    28

    .

    29

    .

    30

    .

    31

    .

    32

    .

    33

    , .

    34

    .

    35

    , .

    36

    L 1 2.

    37

    .

  • 72

    38

    .

    39

    , L.

    40

    L.

    41

    .

    42

    L , .

    43

    , .

    44

    , , .

    45

    , .

  • 73

    Program Spisok;

    { }

    Type Tinf=Char; { }

    TP=^Tel; { }

    Tel=Record { }

    inf:Tinf;{ }

    pSled:TP;{ }

    End;

    Procedure Init(Var head:TP);

    { }

    Begin

    head:=NIL;

    End;{Init}

    Procedure InSpN(infEl:Tinf; Var head:TP);

    { }

    Var pn:TP; { }

    Begin

    New(pn); { }

    pn^.inf:=infEl; { }

    pn^.pSled:=head;{ }

    head:=pn; { }

    End;{InSpN}

    Procedure SozdSpN(Var head:TP);

    { :

    }

    Var s:Char;

    Begin

    Init(head); { }

    WriteLn(' ! * ');

    Repeat

    Read(s);

    InSpN(s,head) { }

    Until s='*';

    ReadLn;

    End;{SozdSpN}

  • 74

    Procedure InitZ(infEl:Tinf; Var head:TP);

    { }

    Begin

    New(head); { }

    head^.inf:=infEl; { }

    head^.pSled:=NIL; { }

    End;{InitZ}

    Procedure InSpP(infEl:Tinf; Var pred:TP);

    { }

    Var pn:TP; { }

    Begin

    If predNIL { ?}

    Then Begin

    New(pn);

    pn^.inf:=infEl; { }

    pn^.pSled:=pred^.pSled; { }

    pred^.pSled:=pn; { }

    pred:=pn;

    End;

    End;{InSpP}

    Procedure SozdSpP(Var head:TP);

    { :

    }

    Var s:Char; pred:TP;

    Begin

    InitZ(' ',head);

    pred:=head; { }

    WriteLn(' ! * ');

    Repeat

    Read(s);

    If s'*'

    Then InSpP(s,pred){ }

    Until s='*';

    ReadLn

    End;{SozdSpP}

    Procedure ProsmSp(head:TP);

    { }

    Var pt:TP; {C }

    Begin

    If head=NIL

    Then Begin

    WriteLn(' !');

  • 75

    Write( Enter ->);

    ReadLn; Exit;

    End;

    WriteLn(' :');

    pt:=head; { }

    While ptNIL

    Do Begin

    Write(pt^.inf);

    pt:=pt^.pSled;{ }

    End;

    WriteLn;

    End; {ProsmSp}

    Procedure OutSpN(Var head:TP);

    { }

    Var pu:TP; { }

    Begin

    If headNIL

    Then Begin

    pu:=head; { }

    head:=head^.pSled;

    Dispose(pu);

    End;

    End; {OutSpN}

    { }

    Var head:TP;

    Begin

    SozdSpN(head); { }

    Write(' '); ProsmSp(head);

    OutSpN(head); { }

    Write(' '); ProsmSp(head);

    SozdSpP(head); { }

    Write(' '); ProsmSp(head);

    ReadLn;

    End.

  • 76

    5

    , .

    4. .

    1:

    1. : , , .

    2. : .

    3. .

    4. . 5. . 6. . 7.

    . c . 8. : ,

    , , , .

    1

    6

    V = D mod 32 + 1

    V ; D ; mod .

    , 03467, V = 67 mod 32 + 1 = 3 + 1 = 4, , :

  • 77

    4

    . ; - , . , . .

    Program LexSortStr;

    { }

    Procedure LexSort(Var st:String);

    { .

    : st - .

    : st - .}

    Function Slovo(pn:Byte; st:String):String;

    { .

    : pn - ,

    st - .

    : Slovo - .}

    Var L,p:Byte;

    Begin L:=Length(st); p:=pn;

    { }

    While (p

  • 78

    sl2:=Slovo(p2,st); { }

    If sl2

  • 79

    6. .

    7. . c .

    8. , . 9. : ,

    , , , .

    2

    7

    V = D mod 21 + 1

    V ; D ; mod . , 03469, V = 69 mod 21 + 1 = 6 + 1 =7, , :

    7

    7

    Program MasZap;

    { }

    Const KMAX=10; { }

    Type Tzap=Record

    name:String[15]; {}

    area:Real; {}

    popul:Real; {}

    End;

    Tmas=Array[1..KMAX] of Tzap;

    {$R+}

  • 80

    Procedure SozdMZ(Var kz:Byte; Var MZ:Tmas);

    { .

    : kz - ,

    MZ - .}

    Var i:Byte;

    Begin Write(' ', KMAX,': ');

    ReadLn(kz);

    For i:=1 To kz Do

    Begin Write(' ? ');

    ReadLn(MZ[i].name);

    Write(' ? ');

    ReadLn(MZ[i].area, MZ[i].popul);

    End;

    End; { SozdMZ }

    Procedure SortMZ(kz:Byte;Var MZ:Tmas);

    { .

    : kz - ,

    MZ - .

    : MZ .}

    Var i:Byte; z:Tzap; flag:Boolean;

    Begin

    If kz=0

    Then Begin WriteLn(' !');

    WriteLn( Enter ->);

    ReadLn; Exit; { }

    End;

    Repeat

    flag:=FALSE;

    For i:=1 To kz-1

    Do If MZ[i].popul/MZ[i].area

  • 81

    Begin

    If kz=0

    Then Begin

    WriteLn(' !');

    Write( Enter ->);

    ReadLn; Exit; { }

    End;

    WriteLn(ComStr:40); WriteLn;

    WriteLn(' ','':20,'':20);

    WriteLn;

    For i:=1 To kz

    Do With MZ[i]

    Do WriteLn(name:16,area:20:7,popul:20:7);

    WriteLn;

    End; {OutMZ}

    Var { }

    ks:Byte; { }

    MS:Tmas; { }

    Begin

    SozdMZ(KS,MS);

    OutMZ(' ',ks,MS);

    SortMZ(KS,MS);

    OutMZ(' ',ks,MS);

    Write(' Enter ->');

    ReadLn;

    End.

  • 82

    6

    , .

    , , . . .

    1. .

    1 ( ).

    2 . . , 4 : 4, 3+1, 2+2, 2+1+1, 1+1+1+1.

    3 mnC :

    1, m=0, n>0 m=n>=0;

    C(n,m) = 0, m>n>=0;

    C(n-1,m-1) + C(n-1,m) .

    4

    , f(x)=0 [a,b] .

    5 . min(x) x, min1(k), , k.

  • 83

    6

    . , , s, i- j- .

    7 , 0. , ( ).

    8 n : - (, ) , , ( ), .

    9

    . ,, n , 1 n . . , : , . , , n , n .

    10 n , 1 n. . , 1- n-. i j (i

  • 84

    13

    n m, (n,m). , , (n,m)=(m,r), r n m.

    14 u0,u1,u2, : u0=0, u1=1, un=un-1+ un-2 (n=2,3, ). un n, .

    15

    a,c,m. f(m),

    n, 00. , .

    17 1

    1 1 1, 1 2 1 . 1 3 3 1 n. n 1 4 6 4 1 . .

    18 m,n1,,nm (m>=2). (n1,,nm),

    (n1,,n)=((n1,,n-1),nk) ( =3,,n ) .

    19

    t0=1, tk=t0tk-1+ t1tk-2++ tk-2t1+ tk-1t0, k=1,2, . tn.

  • 85

    20

    2n+1 , n n (n , n , ). , . , , . , , .

    21

    2n , n n-1 (1,...,n , n+1 , n+2,...,2n ). . , , . , . , , .

    22 4 4 16 ( , b, c, d ) , . . 23 9 3 3 1, 2, 3 , , , , 6. .

    24

    3 3 1,2,3,4,5,6,7,8,9 , , , , .

    25

    4 4 15 1 15. . . . , , .

  • 86

    Program FactRecFunc;

    { }

    Function FactR(k:Byte):Longint;

    { F=K!

    : k - .

    : FactR - .}

    Begin

    If k=0 Then FactR:=1

    Else FactR:=k*FactR(k-1);

    End; { FactR }

    Const P=12; { }

    Var n:0..P; f:Longint;

    Begin {$R+}

    Write(' 0

  • 87

    5

    .

    6 .

    7

    .

    8 .

    9

    .

    10

    .

    11 .

    12 .

    13

    .

    14 . 15

    .

    16 .

    17

    .

    18 .

  • 88

    1 2 3 4

    5 6 7 8

    B1 B2 B3 B4

    B5 B6 B7 B8

  • 89

    1 2 3 4

    5 6 7 8

    1 2 3 4

    5 6 7 8

  • 90

    1

    Program SortMas;

    { }

    Const R=10; { }

    Type Tind=1..R;

    Tmas=Array[Tind] Of Integer;

    Procedure SortVibor(n:Tind; Var M:Tmas);

    {

    }

    Var i,k,imin:Tind; t:Integer;

    Begin For i:=1 To n-1

    Do Begin imin:=i; { }

    For k:=i+1 To n

    Do If M[k]M[i+1] { }

    Then Begin { }

    t:=M[i]; M[i]:=M[i+1]; M[i+1]:=t;

    End;

    End; {SortObmen}

    Procedure SortObmenF(n:Tind; Var M:Tmas);

    {

    }

    Var i,k:Tind; flag:Boolean; t:Integer;

    Begin

    k:=n;{ }

    Repeat flag:=FALSE; { }

    For i:=1 To k-1

    Do If M[i]>M[i+1]

  • 91

    Then Begin { }

    t:=M[i]; M[i]:=M[i+1]; M[i+1]:=t;

    flag:=TRUE; { }

    End;

    k:=k-1;

    Until (Not flag) Or (k=1);

    End; {SortObmenF}

    Procedure SortVstav(n:Tind; Var M:Tmas);

    {

    }

    Var i,j,k:Tind; t:Integer;

    Begin For i:=2 To n

    Do Begin t:=M[i]; { }

    j:=1;

    { }

    While (j

  • 92

    2

    Program SortStrMatr;

    { }

    Uses Crt; { }

    Const R=10;

    Type Tind=1..R;

    Tvect=Array[Tind] of Integer;

    Tmatr=Array[Tind] of Tvect;

    {$R+}

    Procedure InMatr(kstr,kstb:Tind;Var M:Tmatr);

    { }

    Var i,j:Tind;

    Begin Writeln(' :');

    For i:=1 To kstr

    Do Begin For j:=1 To kstb

    Do Read(M[i,j]);

    ReadLn;

    End;

    End;{InMatr}

    Function NStbMin(kstr,kstb:Tind; Const M:Tmatr):Tind;

    { }

    Var i,j:Tind; min:Integer;

    Begin min:=M[1,1]; NStbMin:=1;

    For i:=1 To kstr

    Do For j:=1 To kstb

    Do If M[i,j]M[imax,nstb]

    Then imax:=k;

    StrM:=M[i]; M[i]:=M[imax]; M[imax]:=StrM;

    End;

    End;{SortMatr}

  • 93

    Procedure Okno(x1,y1,x2,y2,cf,ct:Byte);

    { }

    Begin Window(x1,y1,x2,y2); { }

    TextBackGround(cf); { }

    TextColor(ct); { }

    ClrScr; { }

    End;{Okno}

    Procedure OutMatr(kstr,kstb:Tind; Const M:Tmatr);

    { }

    Var i,j:Tind;

    Begin For i:=1 To kstr

    Do Begin For j:=1 To kstb

    Do Write(M[i,j]:4);

    WriteLn;

    End;

    End;{OutMatr}

    Var N,M,NStb:Tind; Matr:Tmatr;

    Begin Okno(1,1,80,25,0,15); { }

    Write(' ? '); ReadLn(N,M);

    Okno(1,6,38,20,2,15); { }

    InMatr(N,M,Matr); { }

    NStb:=NStbMin(N,M,Matr);{ }

    SortMatr(N,NStb,Matr); { }

    Okno(40,6,80,20,3,15); { }

    WriteLn(' ');

    OutMatr(N,M,Matr); ReadLn;

    End.

  • 94

    7

    , , .

    . .

    . , , , , :

    - ; - ; - ( ); - .

    : - ( ); - ( ); - ; - , ( [1], ):

    - ; - .

    , 0 10

  • 95

    1

    ( ) . . . , .

    2

    .

    - , - (1% ), - .

    .

    3

    .

    - , - , :

    ( - )*13% , ,

    - .

    .

  • 96

    4

    . .

    . .

    5

    . .

    . , .

    6

    . ,

    .

    7

    . ,

    .

    8

    .

    , , .

  • 97

    9

    . .

    . , .

    10

    , , .

    ( ). .

  • 98

    8

    1. . . . .

    2. . . . .

    3. . , , .

    4. . . , . .

    5. . . . .

    6. . , . .

    7. . . . .

    8. . . .

    9. . . .

    10. . . .

    11. . . . . . .

    12. . . . . .

    13. . . . . .

    14. . . , . .

    15. . -, - , -.

    16. : .

    17. : .

    18. . : , . .

  • 99

    19. . , , , . : .

    20. . . .

    21. . . .

    22. . . . . .

    23. : , , .

    24. . 25. . .

    . . . 26. :

    . 27. :

    . , .

    28. . . . . . . .

    29. . . . . .

    30. : .

    31. . , . . . . .

    32. . . . .

    33. .

    34. . .

    35. . . . . . . .

    36.pp . .

    37. . . .

  • 100

    38. . , , , . .

    39. . .

    40. . .

    41.. . . . .

    42. . .

    43. : , , ( , ).

    44. : , , .

    45. .

    46. . . 47. . . 48. . . 49. . . 50. . . 51. . ,

    . . 52. . ,

    . . 53. . ,

    . . 54. .

    . . . 55. .

    . 56. :

    . System: . 57. Crt. . .

    . .

  • 101

    9 -

    9.1

    ) 1. .. . . . .:

    . 1999 . - 280. 2. .., .. Turbo Pascal

    7.0. : , .: , 2000 . 496c. 3. .. 7.0. . . .:

    , 2000 . - 616.

    ) 1. .., .., ..

    . : , 1997 . 368. 2. .. Turbo Pascal . .: . , 2000 .

    - 256. 3. . / . ..

    .: , 2002 . 336.

    9.2

    1. 19.701-90 , , . .

    2. 19.101-77 . 3. 19.106-78 ,

    . 4. 19.202-78 .

    . 5. 19.401-78 .

    . 6. 19.402-78 .

    .

    7. 19.502-78 . .

    8. 7.32-2001 , . - .

  • 102

    .

  • 103

    -

    44

    44.2201.03

    .

    - 2003 .

  • 104

    -

    44

    44.2201.01

    .

    - 2003 .

  • 105

    1. 2. 3.

    3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7.

    4. 4.1. 4.2. 4.3. 4.4. 4.5. 4.6.

  • 106

    -

    44

    44.2201.01

    .

    - 2003 .