Goto 10;
For i:=2 to m do
If b<a[i,1] then
Begin
For j:=1 to n do
If b=a[i-1,j] then
Begin
is:=i-1; js:=j; { , b }
Goto 10
End;
Goto 10; { , b }
End;
For j:=1 to n do { - }
If b=a[m,j] then
Begin
is:=i-1; js:=j; Goto 10
End;
10:
Writeln('is = ',is,' js = ',js);
End.
Task208a 20 Goto. , . For While, Goto :
Begin
m, n, A, b
is:=0; js:=0;
If (b>=a[1,1]) and (b<=a[m,n]) then
Begin
i:=2; Cond:=true;
While (i<=m) and Cond do
Begin
Ifb<a[i,1] then
Begin
j:=1;
While (j<=n) and Cond do
Begin
If b=a[i-1,j] then
Begin
is:=i-1; js:=j; { , }
Cond:=false { b }
End;
Inc(j);
End;
Cond:=false; { , b }
End;
Inc(i);
End;
If is=0 then { - }
Begin
j:=1; Cond:=true;
While (j<=n) and Cond do
Begin
If b=a[m,j] then
Begin
is:=i-1; js:=j; Cond:=false
End;
Inc(j);
End;
End;
End;
Writeln('is = ',is,' js = ',js);
End.
2. , ln()/ln(2) (.Task116). , 1.18, .
, - ( ). .
: .
i = (k-1) div n + 1; .
Program Task208b;
Label 10;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var m,n, { }
is,js, { , b }
i,j: byte;
k,k1,k2: word;
b: integer;
A: Matrix; { }
Begin
m, n, A, b
k1:=1; k2:=m*n;
is:=0; js:=0;
While k1<=k2 do
Begin
k:=(k1+k2) div 2;
i:=(k-1) div n + 1; j:=k-(i-1)*n;
If b=a[i,j] then
Begin
is:=i; js:=j; Goto 10
End
Else
If b<a[i,j] then
k2:=k-1
Else
k1:=k+1;
End;
10:
Writeln('is = ',is,' js = ',js);
End.
9.
, .
|
|
,
6 12 -4 17 1 0 9 11 14
14 6 12 17 -4 1 0 9 11
Program Task209;
Label 10;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of real;
Var i,j,jmax,m,n: byte;
Amax,R: real;
A: Matrix;
Begin
m, n, A
For i:=1 to m do { }
Begin
Amax:=a[i,1]; jmax:=1; { }
For j:=2 to n do { . i- }
If a[i,j]>Amax then
Begin
Amax:=a[i,j]; jmax:=j
End;
If jmax=1 then { - }
Begin { }
R:=a[i,n];
For j:=n downto 3 do
a[i,j]:=a[i,j-1];
a[i,2]:=R;
End
Else
If jmax=n then { - }
Begin { }
R:=a[i,n-1];
For j:=n-1 downto 2 do
a[i,j]:=a[i,j-1];
a[i,1]:=R;
End
Else { }
Begin { }
R:=a[i,n]; { }
For j:=n downto jmax+2 do
a[i,j]:=a[i,j-1];
a[i,jmax+1]:=a[i,jmax-1];
For j:=jmax-1 downto 2 do
a[i,j]:=a[i,j-1];
a[i,1]:=R;
End;
End;
A
End.
10.
, .
Program Task210;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,j,iz,k,m,n: byte;
A: Matrix;
Begin
m, n, A
For j:=1 to n do
Begin
k:=0;
For i:=1 to m do
If a[i,j]=0 then
Begin
Inc(k);
For iz:=i downto k+1 do
a[iz,j]:=a[iz-1,j];
a[k,j]:=0;
End;
End;
End.
11.
, .
Program Task211;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of real;
Vector = array [1..Mmax] of real;
Var i,j,k,m,n: byte;
S: real;
Cond: boolean;
A: Matrix;
D: Vector;
Begin
m, n, A
For j:=1 to n do
Begin
S:=0; { }
For i:=1 to m do { S }
S:=S+a[i,j]; { j- }
S:=S/m;
For i:=1 to m do { d }
d[i]:=abs(S-a[i,j]); { }
Cond:=true; k:=m-1;
While Cond do { }
Begin { }
Cond:=false; k:=m-1;{ d }
For i:=1 to k do
If d[i]>d[i+1] then
Begin
S:=a[i,j]; a[i,j]:=a[i+1,j]; a[i+1,j]:=S;
S:=d[i]; d[i]:=d[i+1]; d[i+1]:=S;
Cond:=true;
End;
Dec(k);
End;
End;
A
End.
12.
, , .
Program Task212;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of real;
Var i,j,m,n: byte;
R: real;
A: Matrix;
Begin
m, n, A
R:=a[1,1]; { - }
For i:=1 to m-1 do { }
a[i,1]:=a[i+1,1];
For j:=1 to n-1 do { }
a[m,j]:=a[m,j+1];
For i:=m downto 2 do { }
|
|
a[i,n]:=a[i-1,n];
For j:=n downto 3 do { }
a[1,j]:=a[1,j-1];
a[1,2]:=R; { }
End.
13.
. , , , .
Program Task213;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,j,imax,jmax,m,n: byte;
R,Amax: integer;
A: Matrix;
Begin
m, n, A
Amax:=abs(a[1,1]); { }
imax:=1; jmax:=1; { }
For i:=1 to m do
For j:=1 to n do
If abs(a[i,j])>Amax then
Begin
Amax:=a[i,j]; imax:=i; jmax:=j;
End;
If imax>1 then { }
For j:=1 to n do { 1 imax }
Begin
R:=a[1,j]; a[1,j]:=a[imax,j]; a[imax,j]:=R;
End;
If jmax>1 then { }
For i:=1 to m do { 1 jmax }
Begin
R:=a[i,1]; a[i,1]:=a[i,jmax]; a[i,jmax]:=R;
End;
imax, jmax, Amax, A
End.
14.
, ( , ).
,
( , ).
SignGroup Task214 - . true, , false . , - . , .
Program Task214;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,j,imax,jmax,m,n: byte;
Amax: integer;
A: Matrix;
{ ------------------------------------ }
Function SignGroup(k:byte):boolean;
{ k- }
Label 10;
Var j: byte;
b: boolean;
Begin
b:=true;
For j:=1 to n-1 do
If a[k,j]<>a[k,j+1] then
Begin
b:=a[k,j]<a[k,j+1]; Goto 10
End;
10:
SignGroup:=true;
If b then
For j:=2 to n-1 do
If a[k,j]>=a[k,j+1] then
Begin
SignGroup:=false; Exit
End;
If not b then
For j:=2 to n-1 do
If a[k,j]<=a[k,j+1] then
Begin
SignGroup:=false; Exit
End;
End { SignGroup };
{ ------------------------------------ }
Begin
m, n, A
imax:=0; jmax:=0; Amax:=0;
For i:=1 to m do
IfSignGroup(i) then
If imax=0 then { }
Begin { }
Amax:=a[i,1]; imax:=i; jmax:=1;
For j:=2 to n do
If a[i,j]>Amax then
Begin
Amax:=a[i,j]; jmax:=j;
End;
End
Else
For j:=1 to n do { }
If a[i,j]>Amax then { }
Begin
Amax:=a[i,j]; imax:=i; jmax:=j;
End;
Writeln('imax = ',imax,' jmax = ',jmax,' Amax = ',Amax);
End.
15.
1, 2, 3,..., (1,1). , .
Program Task215;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,j,k,kmax,m,n,p: byte;
S,Smax: real;
A: Matrix;
|
|
Begin
m, n, A
If m>n then { p = min(m,n) }
p:=n
Else
p:=m;
Smax:=a[1,1]; kmax:=1;
For k:=2 to p do
Begin
S:=0;
For i:=1 to k do
For j:=1 to k do
S:=S+a[i,j];
S:=S/sqr(k);
If S>Smax then
Begin
Smax:=S; kmax:=k;
End;
End;
kmax, Smax
End.
16.
, . , . . , .
Program Task216;
Const Mmax = 30; Nmax = 50;
Type Matrix = array[ 1..Mmax,1..Nmax] of real;
Var i,j,m,n,
Count: byte; { }
R: real;
Cond: boolean;
A: Matrix;
Begin
m, n, A
Count:=0;
For i:=2 to m-1 do
For j:=2 to n-1 do
Begin
R:=a[i,j];
Cond:=(R<a[i,j-1]) and (R<a[i,j+1]) and
(R<a[i-1,j]) and (R<a[i+1,j]);
If Cond then
Inc(Count);
End;
Writeln('Count = ',Count);
End.
17.
, . .
. .
, 8, , .
Program Task217;
Label 10;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i1,j1, { - k1 }
i2,j2, { - k2 }
m,n: byte; { - }
k1,k2, { }
p: word; { }
Cond: boolean;
A: Matrix; { }
Begin
m, n, A
p:=m*n; Cond:=false;
For k1:=1 to p-1 do
Begin
i1:=(k1-1) div n + 1; j1:=k1-(i1-1)*n;
For k2:=k1+1 to p do
Begin
i2:=(k2-1) div n + 1; j2:=k2-(i2-1)*n;
If a[i1,j1]=a[i2,j2] then
Begin
Cond:=true; Goto 10;
End;
End;
End;
10:
IfCond then
Writeln('i1=',i1,' j1=',j1,' i2=',i2,' j2=',j2)
Else
Writeln(' ');
End.
18.
, , , - - ().
Program Task218;
Label 10;
Const Nmax = 40;
Type Matrix = array [1..Nmax,1..Nmax] of integer;
Var j,k,n: byte;
Cond: boolean;
A: Matrix;
Begin
m, n, A
k:=0;
Repeat
Cond:=true; Inc(k);
For j:=1 to n do
If a[k,j]<>a[j,k] then { }
Begin { }
Cond:=false; Goto 10 { }
End;
10:
Until Cond or (k=n);
IfCond then
Writeln('C ',k)
Else
Writeln(' ');
End.
Repeat , (Cond = true) (k = n).
19.
, . , .
|
|
Program Task219;
Label 10;
Const eps = 0.001; Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of real;
Var i,j,k,i1,i2,m,n: byte;
R,R1: real;
Cond: boolean;
A: Matrix;
Begin
m, n, A
For i:=1 to n-1 do
For k:=i+1 to n do
Begin
R:=a[i,1]/a[k,1]; Cond:=true;
For j:=2 to n do
Begin
R1:=a[i,j]/a[k,j];
Ifabs(R-R1)>eps then
Cond:=false;
End;
If Cond then Goto 10;
End;
10:
IfCond then
Writeln(' ',i,' ',k)
Else
Writeln(' ');
End.
R .
20.
, 1, 2,..., .
Program Task220;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,j,k,m,n: byte;
Cond: boolean;
A: Matrix;
{ --------------------------------- }
Function Permut(k:byte):boolean;
{ true, k- 1.. n }
Var j,nk: byte;
R: integer;
Bol: boolean;
Begin
Bol:=true; nk:=n-1; { }
While Bol do { }
Begin
Bol:=false;
For j:=1 to nk do
If a[k,j]>a[k,j+1] then
Begin
R:=a[k,j]; a[k,j]:=a[k,j+1]; a[k,j+1]:=R;
Bol:=true;
End;
Dec(nk);
End;
Permut:=true; { }
For j:=1 to n do { }
If a[k,j]<>j then { }
Begin
Permut:=false; Exit;
End;
End { Permut };
{ --------------------------------- }
Begin
m, n, A
k:=0;
For i:=1 to m do
IfPermut(i) then
Inc(k);
Writeln('k = ',k);
End.
21.
, , ( ).
Program Task221;
Label 10;
Const Mmax = 30; Nmax = 50;
Type Matrix = array [1..Mmax,1..Nmax] of integer;
Var i,k,m,n: byte;
Cond: boolean;
A: Matrix;
{ --------------------------------- }
Function SignRow(k:byte):boolean;
{ }
{ k- }
Var i,j: byte;
CondSim,CondHigh: boolean;
Begin
CondSim:=true; SignRow:=true;{ }
i:=1; j:=n; { }
While i<j do