. .
1. , . , , , .
9. 10000 1, 2,..., 10000 8000 b1, b2,..., b8000. 1, 2,..., 10000 . bk, k b1, b2,..., b8000.
Program Task9;
Type ra = array [1.. 10000] of Real;
ia = array [1.. 8000] of Integer;
pr = ^ra; pi = ^ia; { }
Var k, i: Integer; f: pr; g: pi; { }
Begin
New (f); { 10000 }
For i:= 1 to 10000 do Read(f^[i]);
For i:= 10000 downto 1 do Writeln(f^[i]);
Dispose (f); { }
New(g); { 8000 }
Read(g^[1]); k:= g^[1];
For i:= 2 to 8000 do
Begin
Read(g^[i]); If g^[i] < k Then k:= g^[i]
End;
Writeln(g^[k]) { Dispose }
End.
10000 . f^[1],..., f^[10000] Read(f^[i]). , , ra, Dispose(f). 8000 . g^[1],..., g^[8000] Read(g^[i]), . ra ia , .
2. , . , , , . , , , . , , .
10. 1, n . 2 1, .
Vector , . Vector , , Vector. Readln(n) . Getmem, Release.
|
|
Program ask10;
{$R-}
Type Vector = rray [1..1] of integer;
Var a1, a2: ^Vector; p: pointer; n, i, s: integer;
Begin
Write( : ); Readln(n);
mark(p); { }
Getmem(a1, n*sizeof(integer)); { 1}
for i:= 1 to n do Readln(a1^[i]); { 1}
S:= 0;
For i:= 1 to n do S:= S+a1^[i]; { }
Writeln(S=,S);
Getmem(a2, n*sizeof(integer)); { 2}
For i:= 1 to n do a2^[n+1-i]:= a1^[i] 1; { 2}
For i:= 1 to n do Writeln(a2^[i]); { 2}
Release(p); { }
End.
Vector , 1 1. , , , , {$R}.
11. C 1000 .
, , , . , , , .
Program Task11
Type PString = ^String;
Var
Buf: String;
L: array[1..1000] of PString;
ff: Text;
i: Integer;
Begin
Assign(ff, Dat.txt);
Reset(ff);
for i:= 1 to 1000 do
Begin
Readln(ff, Buf);
GetMem(L[i], Length(Buf) + 1);
L[i]^:= Buf;
End;
End.
256 (256 1000 ) 4 (4 1000 ).
3. .
12. d, 200 200 .
2002006 , 234. d: array [1..200, 1..200] of Real, . , , 64.
Program Task12;
Type
d200 = Array [1.. 200] of Real;{ }
dPtr = ^d200;{ }
dPtr200 = array [1..200] of dPtr;{ }
Var d: dPtr200; { , }
{ d200}
S: Real; i, j: Integer;
Begin
S:=0;
For i:= 1 to 200 do
Begin
New(d[i]);
{ 200 Real,}
{ d[i]}
For j:= 1 to 200 do
Begin
d[i]^[j]:= random(10);
{ }
{ }
S:= S + d[i]^[j];
End;
Dispose(d[i]);
End;
S:= S/40000; Writeln(S= , S:2:2);
End.
200 200 200 200 . . , . 2006 . d () : d[i]^[j], i , j .
|
|
4. , .
13. f1 . f2 . , : , , . , : , . f a1b1a2b2... anbn, ai i , bi . , i = 1, 2,..., n : i i , bi- f1; ai , bi- f2. , , .
Program Task13;
Type Igru = Record { }
Name: String[15];
Cost: Integer;
Age1, Age2: Integer;
End;
Bagaz = Record { }
Count: Integer;
W: Real;
End;
Var
Ig: ^Igru; Ba: ^Bagaz; { , }
{ }
f1: File of Igru; f2: File of Bagaz; f: Text;
i, k: Integer; a, b:Char; code: Word;
Begin
Assign(f, Dat3'); Assign(f1, Dat1'); Assign(f2, Dat2');
{ }
Reset(f); Reset(f1); Reset(f2); { }
While Eof(f) = false do { }
Begin
Read(f, a, b); { }
Val(b, k, code); { }
If a = i Then
Begin { }
New(Ig);
Seek(f1, k); { k}
Read(f1, Ig^); Writeln;
With Ig^ Do
Begin
Writeln( ,Name);
Writeln( ,Cost);
Writeln( , Age1);
Writeln( , Age2);
End;
Dispose(Ig);
End
Else
Begin { }
New(Ba);
Seek(f2, k); Read(f2, Ba^);
With Ba^ Do
Begin
Writeln( , Count);
Writeln( , W:8:2);
End;
Dispose(Ba);
End;
End;
Close(f); Close(f1); Close(f2);
End.
, f, b. , . b . k- Seek.
, , , . , , .
, () . , , . Nil, .. . , (. 6). .
. , .
|
|
, Integer. . Elem, Uk.
Type
Uk = ^Elem; { }
Elem = Record{ }
x: Integer;
next: Uk;
End;
Var p, q: Uk;
, .
, 5, 12 8. . p. . q . := Nil .
New(q); q^.x:= 8; q^.next:= p; p:= q;
, , 8 . q.
New(q); q^.x:= 12; q^. next:= p; p:= q; , , 12; q .
New(q); q^.x:= 5; q^.next:= p; p:= q, , 5, .
q . Nil next , 8, , .
8, 12, 5 , :
Type
Uk = ^Elem;
Elem = Record
x: Integer;
next: Uk;
End;
Var p, q: Uk; i: Integer;
Begin
p:= Nil;
For i:= 3 downto 1 do
Begin
New(q); { }
Readln(q^.x); { }
q^.next:= p; { }
p:=q; { }
End;
End.
.
:
;
;
.
q , . q:= q^. next ( ) Nil. , . , , ,
q:= p;
While q <> Nil do
Begin
Write(q^.x); q:= q^.next;
End;
While q <> Nil do... q , , .. , , Nil.
p, q, r q , p cc . , q, , 17. :
|
|
New(r); r^.x:= 17; r^.next:= q^.next; q^.next:= r;
q ( ) , , q. :
r:= q^.next; q^.next:= q^.next^.next; r^.next:= Nil;
. , . , , Dispose. , , .. , .
, , r:
Procedure exclude(Var p: Uk; r: Uk);
{ ; r }
Var q: Uk; { }
Begin
If p = r then p:= r^.next
else
Begin
q:= p; While q^.next <> r Do q:= q^.next;
q^.next:= r^.next;
End;
r:= Nil;
End;
, 17, :
New(r); r^.x:= 17; r^.next:= p; p:= r;
:
r:= p; p:= p^.next; r^.next:= Nil;
, ( ) , . , . , . . , . , . , , . , , .
. (. 7). , , ( ). . , . , . : . , .
. 7.
, , (. 8). .
. 8.
, ( ). , , .
. , , . .
:
New(q); Readln(q^.x); q^.next:= p; p:= q;
:
q:= p; p:= q^.next; y:= q^.x; dispose(q);
, :
y:= p^.x;
, . , , . , . , Nil. , . , .
|
|
, . , 0 ( ). : , 0. : - -. m + n , m n , : , . - - . -.
14. , , . : , , . , , , , . , , . .
Program Task14;
{ men
}
Const men:array[1..8] of string[30] =
( , ,
, ,
, , , );
Type Uk = ^Elem; Elem = Record { }
Pred: Uk;
Fam: String[10];
Punkt: String[10];
Date: String[5];
next: Uk;
End;
Sp = ^Elem1; Elem1 = Record{ }
N: integer;
Punkt: String[10];
Date: String[5];
Count: Integer;
next: Sp;
End;
Var o1, o2, o3: Uk; s1, s2: Sp;
{o1 }
{o2 }
{3 }
{s1 c; s2 }
a, i: integer;
Procedure Spisok;
Var Ch: Char;
Begin
While Ch<>N Do
Begin { }
New(s2); s2^.next:= s1; s1:= s2;
Writeln( ); Readln(s2^.n);
Writeln( ); Readln(s2^.Punkt);
Writeln( ); Readln(s2^.date);
Writeln( ); Readln(s2^.count);
Writeln(?(Y/N)); Readln(Ch); Ch:= Upcase(Ch);
{ }
End;
End;
Procedure Ochered;
Var Ch: Char;
Begin
While Ch<>N Do
Begin { . ( )}
New(o2); o2^.next:= o1; { }
o1^.Pred:= o2; { }
o1:= o2; {o1 }
Writeln( ); Readln(o2^.Fam);
Writeln( ); Readln(o2^.Punkt);
Writeln( ); Readln(o2^.date);
Writeln(?(Y/N)); Readln(Ch); Ch:= Upcase(Ch);
{ }
End; o2^.pred:= Nil;
{ ( ) }
End;
Procedure Pokupka;
Label Met1;
Begin
o2:= o3; { }
Writeln( ,o2^.Fam);
Writeln( ,o2^.Punkt);
Writeln( ,o2^.date);
s2:= s1; { }
While s2 <> Nil Do
Begin
if (o2^.date = s2^.date) and { }
(o2^.Punkt = s2^.Punkt) and
(s2^.count <> 0) Then { ,}
Begin { }
Writeln( . !);
{ 1}
s2^.count:= s2^.count 1; Goto Met1;
End;
s2:= s2^.next; { }
End;
{ }
3^.next:= 1; 1:= 3; o1^.pred:= Nil; { }
Met1:o3:= o2^.pred; { }
o3^.next:= Nil; Dispose(o2);
End;
Procedure Vspisok;
{ }
Begin
s2:= s1;
While s2 <> Nil do
Begin
Writeln( ,s2^.n);
Writeln( ,s2^.Punkt);
Writeln( ,s2^.date);
Writeln( ,s2^.count);
s2:= s2^.next;
End;
End;
Procedure Vochered;
{ (c )}
Begin
o2:= o3;
While o2<>Nil Do
Begin
Writeln( ,o2^.Fam);
Writeln( ,o2^.Punkt);
Writeln( ,o2^.date);
o2:= o2^.pred;
End;
End;
Begin { }
Repeat { }
For i:= 1 to 8 do Writeln(i:7, :5,men[i]); { }
Write( ?); Readln(a); { }
Case a of
1: Begin New(s1); s1:= Nil; Spisok; End; { }
2: Spisok; { }
3: Begin { }
New(o3); New(o1); o1:=Nil;
New(o2); o3:=o2; o2^.next:= o1; o1:= o2;
{3 }
Writeln( ); Readln(o2^.Fam);
Writeln( ); Readln(o2^.Punkt);
Writeln( ); Readln(o2^.date);
Ochered;
End;
4: Ochered; { }
5: Pokupka; { }
6: Vspisok; { }
7: Vochered; { }
End;
Until a = 8; {8 }
End.
. ( ), ( ). . , . . , . 9, , , ABCA BCDB.
. 9.
, , (. 10, 11). : , , , . , , . , , . , , .
, . , . () , :
1) , ( );
2) , , ;
3) ( ) .
. 10 . . , , .
. . :
Type Uk = ^knot;
knot = Record
date: { }
Left, Right: Uk
End;
Var Tree: Uk;
knot , Left Right Nil, , New knot. knot, . , , knot, . Left (Right) knot Nil, , , ( ).
. 11 , Integer .
: , , . , .
:
1) ; ; ;
2) ; ; ;
3) ; ; .
. , . 10, A B D G H E C F I J. G D H E A C I F J.
15. ( [2]). , . ( ). ( ) . . : , . .
:
New(p); p^.word:= w; p^.count:= 1; ^.left:= nil; p^.right:= nil
Program Task15;
Type Tree_ptr = ^Tree;
Tree = Record { }
Wordd: String; {}
Count: Byte; { }
Left, Right: Tree_ptr; { }
End;
Var t, p, q: Tree_ptr; W: String; Found: Boolean;
{p, q ; w ;
found = true, }
Procedure Out_tree(t: Tree_ptr); { }
{t }
Begin
If t <> Nil Then Begin
Out_tree(t^.Left);
Writeln(t^.Wordd,-,t^.count);
Out_tree(t^.Right);
End;
End;
BEGIN { }
Readln(w);
New(t);{ }
With t^ Do Begin Wordd:= w; Count:= 1; Left:= nil; Right:= nil; End;
Readln(w);
While w <> Do { }
Begin { }
found:= false; p:= t;
While (p<>nil) and (found = false) do
Begin
{ , }
q:= p;
if w<p^.wordd then p:= p^.left { , }
else if w>p^.wordd then p:= p^.right
{ , }
else found:= true; { }
End; { }
If found then inc(p^.count) { , }
Else Begin { ,}
New(p); { }
With p^ do Begin
wordd:= w; count:= 1; Left:= Nil; right:= Nil;
End;
if w<q^.wordd Then q^.Left:= p
{ , }
Else q^.Right:= p; { }
End;
Readln(w); { }
End; { }
out_tree(t); { }
End.
Nil, :
Const
pr: ^Real = Nil;
:
type
Direction = (Left, Right, Up, Down);
NodePtr = ^Node;
Node = record
Next: NodePtr;
Value: Direction;
end;
const
N1: Node = (Next: nil; Value: Down);
N2: Node = (Next: @N1; Value: Up);
N3: Node = (Next: @N2; Value: Right);
N2: Node = (Next: @N3; Value: Left);
3.
, . , , , . . , . , , . , .
67, , - (). . , , .
3.1. ?
, , . , , , . :
Type TPerson = record
Name: string[25];
Dolgn: string[25];
Stavka: Real;
end;
Var Person: TPerson;
TPerson , .. , . Person .
TPerson . Name, Dolgn Stavka , , , TPerson.
, , . . , . TStudent :
TStudent = record
Name: string[25];
Dolgn: string[25];
Stavka: Real;
Ball: Real;
end;
Terson TStudent:
TStudent = record
Student: TPerson;
Ball: Real;
end;
T TStudent TPerson. TStudent , TPerson, - , TStudent .
, . . bject.
Type
TPerson = Object
Name: string[25];
Dolgn: string[25];
Stavka: Real;
end;
TStudent = Object (TPerson)
Ball: Real;
end;
. TPerson , TStudent . TStudent .. - .
, , , , :
Type
PStudent = ^TStudent;
Var
Student: TStudent;
DynaStudent: PStudent;
, , With, . :
Student.Stavka:= 145;
With Student do
Begin
Name:= ;
Ball:= 4.87;
End;
, .
, . . TPerson :
Procedure Init (Var Person: TPerson; Nm, Dg: String; Sv: Real);
Begin
With Person Do
Begin Name:= Nm; Dolgn:= Dg; Stavka:= Sv; End;
End;
- , , , . . , .
Type
TPerson = Object
Name: string[25];
Dolgn: string[25];
Stavka: Real;
Procedure Init (Nm, Dg: String; Sv: Real);
end;
.
Procedure TPerson.Init;
Begin
With Person Do
Begin Name:= Nm; Dolgn:= Dg; Stavka:= Sv; End;
End;
. . , , . . - .
, . - , - .