Цитата:
Сообщение от Lizaa
2. Дана целочисленная квадратная матрица:
1) выполните сжатие матрицы, удалив из нее те столбцы, в которых количество отрицательных элементов совпадает с количеством положительных;
2) определите количество строк, в которых расположены максимальные элементы матрицы.
|
Код:
Const
N0=10; { for example; change if you want to }
Var
A:Array [1..N0,1..N0] of Integer;
Max:Integer;
i,j,p,M,N,Pos,Neg,Num:Byte;
b:Boolean;
Begin
M:=N0;
N:=N0;
Randomize;
Writeln('Initial matrix:');
For i:=1 to M do
begin
For j:=1 to N do
begin
A[i,j]:=-99+Random(199);
Write(A[i,j]:4);
end;
Writeln;
end;
For j:=1 to N do
begin
Pos:=0;
Neg:=0;
For i:=1 to M do
begin
if A[i,j]>0 then Inc(Pos);
if A[i,j]<0 then Inc(Neg);
end;
If Pos=Neg then
begin
for i:=1 to M do
for p:=j+1 to N do
A[i,p-1]:=A[i,p];
Dec(N);
end;
end;
Writeln('Compressed matrix:');
For i:=1 to M do
begin
For j:=1 to N do
Write(A[i,j]:4);
Writeln;
end;
Writeln;
Max:=-200;
Num:=0;
For i:=1 to M do
For j:=1 to N do
If A[i,j]>Max then Max:=A[i,j];
For i:=1 to M do
begin
b:=false;
j:=0;
Repeat
Inc(j);
If A[i,j]=Max then b:=true;
Until b or (j=N);
If b then Inc(Num);
end;
Writeln('Number of lines, containing maximal element = ',Max,', is ',Num);
Readln
End.