( ) .
, , , . . , . () .
1. SORT 10. int_ar_10, :
type int_ar_10 = array [1..10] of integer;
...
procedure SORT(ent_mas:int_ar_10; var exit_mas:int_ar_10);
, SORT 10.
, , 1 100 , int_ar_100 (100) , . , ( 101 ). - , int_ar_100 .
type , .
, , , .
. , , , . - var - .
- ( ). - Low High. , Low , High -- . 0, Low.
|
|
2. SORT , . : 1) ent_mas exit_mas SORT , , 2) ent_mas exit_mas SORT i_first, i_fin (ent_mas) j_first, j_fin (exit _mas), Low High, 3) , (i_fin - i_first) <> (j_fin - j_first). :
var a,b:array [1..8] of integer; { a,b }
procedure SORT(ent_mas: array of integer; var exit_mas: array of integer);
var i_first,i_fin,j_first,j_fin:integer; { SORT }
begin { SORT }
i_first:=Low(ent_mas);i_fin:=High(ent_mas); { ent_mas }
j_first:=Low(exit_mas);j_fin:=High(exit_mas); { exit_mas }
if (i_fin-i_first)<>(j_fin-j_first) then begin
wirteln ( Different lengths of arrays in proc. SORT, EXIT!); exit end;
...
end; { SORT }
begin { }
...
SORT(a,b); { SORT a,b }
...
end. { }
SORT , . . .
3. 2 , . , . SORT , :
var a,b:array of integer; { a,b }
N:integer;
Procedure SORT...
begin { }
writeln ('Vvedite razmernost massiva:');read(n); { n }
SetLength (a,n); SetLength (b,n); { n a b }
for i:=1 to n do begin { a }
writeln('vvedite element a[',i,']='); { a [i] }
read(a[i]) { a[i] a }
End;...
SORT(a,b); { SORT a,b }
...
SetLength(a,0); SetLength(b,0); { a b }
end. { }
. , , . . .
|
|
4. , :
) n m M[1..n,1..m],
) M[1..n,1..m],
) SUM_STR S[1..n], ,
) S[1..n] ,
) .
. i j, , , LM. k = k (i, j, m) LM 5 .8.5. m SUM_STR : k (i, j, m) n ( ). , 1, 0.
var LM: array of integer; { . LM }
S: array of integer; { . S }
n,m,i,j,el: integer;
function k(i,j,m:integer):integer; { k = k (i, j, m) = (i-1)m +(j-1) }
begin k:= (i-1)*m + j -1; end;
procedure SUM_STR(L:array of integer; m:integer; var STR_S:array of integer);
{ }
var k,n,i_first,i_fin,i,j:integer;
begin { SUM_STR }
i_first:=Low(L);i_fin:=High(L); { L }
n:=(i_fin-i_first+1) div m; { n , L }
for i:=1 to n do STR_S[i-1]:=0; { STR_S }
for i:=1 to n do { STR_S }
for j:=1 to m do
begin k:=(i-1)*m+j-1; STR_S[i-1]:=STR_S[i-1]+L[k] end;
end; { SUM_STR }
begin { }
writeln (' Vvedite hislo strok:');read(n); { n }
writeln (' Vvedite hislo stolbtsov:');read(m); { m}
SetLength (LM,n*m); { LM M[1..n,1..m] }
SetLength (S,n); { S }
for i:=1 to n do { }
for j:=1 to m do begin
writeln('vvedite element M[',i,',',j,']='); { M [i,j] }
read(el); LM[k(i,j,m)]:=el; { M [i,j] LM }
End;
for i:=1 to n do begin { M[1..n,1..n] }
for j:=1 to m do write(' M[',i,',',j,']=',LM[k(i,j,m)]:6); { }
writeln; { }
End;
SUM_STR(LM, m, S); { SUM_STR }
for i:=0 to n-1 do { S }
writeln(' Sum of elements in stroke ',i+1,'=',S[i]:6);
SetLength(LM,0); SetLength(S,0); // LM S
end. { }
, : 1) () 2) . , . , , , . , .
|
|
.
1. ?
2. ?
3. ?
4. ?
5. ?
6. ?
.
1. ) - ) , `a = (a 1,..., an) `b = (b 1,..., bn) (`a, `b) = (a 1 b 1 +...+ anbn) Sc (`a, `b):
) `a `b n =3 c ;
) `a `b 1 ≤ n ≤ 100 c ;
) `a `b 1 ≤ n ≤ 100 Sc (`a, `b);
) `a `b n, Sc (`a, `b).
.
1. A B, 5 . ,
- scal.
type vector=array [1..5] of real;
function scal (n:integer;
var a,b:vector):real;
var i:integer;
s:real;
begin
s:=0;
for i:=1 to n do s:=s+a[i]*b[i];
scal:=s;
end;
var i:integer;
a,b:vector;
s:real;
begin
writeln (' 1 5 :');
for i:=1 to 5 do read (a[i]);
writeln (' 2 5 :');
for i:=1 to 5 do read (b[i]);
s:=scal(5,a,b);
writeln ('s=',s:10:3);
end.
2. A n res, A ( , ).
, , : Middle , Otkl - A mid b. b . , type , 100 .
type vector= array [1..100] of real;
function Middle (n:integer;
var a:vector):real;
var j:integer;
res:real;
begin
res:=0.0;
for j:=1 to n do res:=res+a[j];
Middle:=res/n;
end;
procedure Otkl (n:integer; mid:real;
var a,b:vector);
var j:integer;
begin
for j:=1 to n do b[j]:=abs(a[j]-mid);
end;
var a,res: vector;
i,n:integer;
s:real;
|
|
begin
write ('? ');
readln (n);
for i:=1 to n do begin
write ('A[',i,']=');
readln (a[i]);
end;
s:=Middle (n,a);
Otkl (n,s,a,res);
for i:=1 to n do
writeln ('res[',i,']=',res[i]:8:2);
end.
3. , .
, A n3m B m3p : ci,j -- n3m. , : i A, j B , l A B, ci,j. mmul :
type matrix=array[1..10,1..10] of real;
var a,b,c: matrix;
i,j,n,m,p: integer;
procedure mmul (n,m,k:integer;
var a,b,c:matrix);
var i,j,l:integer; s:real;
begin
for i:=1 to n do
for j:=1 to k do begin
s:=0;
for l:=1 to m do s:=s+a[i,l]*b[l,j];
c[i,j]:=s;
end;
end;
begin
repeat
writeln;
write (' ',
'1 : ');
readln (n);
write (' ',
'1 : ');
readln (m);
write (' ',
'2 : ');
readln (p);
until (n>1) and (n<11) and (m>1)
and (m<11) and (p>1) and (p<11);
for i:=1 to n do begin
writeln (' ',i,
' A ',m,':');
for j:=1 to m do read (a[i,j]);
end;
for i:=1 to m do begin
writeln (' ',i,
' B ',p,':');
for j:=1 to p do read (b[i,j]);
end;
mmul (n,m,p,a,b,c);
for i:=1 to n do begin
writeln;
for j:=1 to p do write (c[i,j]:10:3);
end;
end.
4. , , 4.
5. , .
N , . ?
cities. , , i j ai,j, , max(ai,j+aj,i), "" "". . , , .
const cities=10;
type matrix=array [1..cities,1..cities]
of integer;
function max1 (n:integer; var a:matrix;
var imax,jmax:integer):integer;
var i,j,m,p:integer;
begin
m:=a[1,2]; imax:=1; jmax:=2;
for i:=1 to n do
for j:=1 to n do
if (i<>j) then begin
p:=a[i,j]+a[j,i];
if p>m then begin
m:=p; imax:=i; jmax:=j;
end;
end;
max1:=p;
end;
function readNumber (s:string;
min,max:integer):integer;
var a:integer;
begin
repeat
write (s);
{$I-}readln(a);{$I+}
if IoResult<>0 then
writeln (', !')
else if (a<min) or (a>max) then
writeln (', ',
' [',min, ',',
max, ']')
else break;
until false;
readNumber:=a;
end;
procedure readMatrix1 (var n:integer;
var a:matrix);
var i,j:integer; s,s1:string;
begin
n:=readNumber (' ',
' : ',2,cities);
for i:=1 to n do
for j:=i+1 to n do begin
s:='A['; str(i,s1); s:=s+s1+',';
str(j,s1); s:=s+s1+']=';
a[i,j]:=readNumber (s,0,maxInt);
end;
end;
procedure writeMatrix1 (s:string;
n:integer; var a:matrix);
var i,j:integer;
begin
writeln (s);
for i:=1 to n do begin
for j:=1 to n do write (a[i,j]:7);
writeln;
end;
end;
var a:matrix;
n,gorod1,gorod2:integer;
begin
readMatrix1 (n,a);
max1 (n,a,gorod1,gorod2);
writeMatrix1 ('A=',n,a);
writeln (' ',
' ',gorod1,' ',gorod2);
readln;
end.