Определить сумму элементов в каждой строке матрицы. Если минимальная из этих сумм положительная, то поменять местами вторую и третью строки

code: #pascal
program PascalGuru;
uses crt;
 
var A:array[1..50,1..50] of integer;
    B,C:array[1..50] of integer;
    i,j,n,summa,min,count,max_c:integer;
 
procedure exchange(var a,b:integer);
var c:integer;
begin
c:=a; a:=b; b:=c; end;
 
{----------------------------------------------------}
begin
write('Razmer matritsy= '); readln(n);
 
for i:=1 to n do
for j:=1 to n do begin write ('A[',i,',',j,']= '); readln (A[i,j]); end;
 
clrscr;
write('A:');
for i:=1 to n do begin writeln;
for j:=1 to n do write (A[i,j]:8);  end;
writeln;writeln;
 
  for i := 1 to n do  begin summa:=0;
     for j := 1 to n do
     summa:=summa+A[i,j]; B[i]:=summa;
    end;
 
min:=B[1];
for i :=2 to n do
if B[i]<min then min:=B[i];
writeln;writeln;
writeln('Min= ',min);
writeln;writeln;
 
if min>=0 then
           begin
            for j:=1 to n do exchange (A[2,j],A[3,j]);
            write('A:');
            for i:=1 to n   do begin writeln;
            for j:=1 to n do write (A[i,j]:8);  end;
           end
          else
           begin
            for j:=1 to n do
                begin
                 count:=0;
                 for i:=1 to n do
                 if A[i,j]<0 then inc(count);
                 C[j]:=count;
                 max_c:=1;
                  for i:=2 to n do
                  if C[i]>C[max_c] then max_c:=i;
                end;
 
            for i:=1 to n do
            for j:=max_c+1 to n do A[i,j-1]:=A[i,j];
 
            write('A:');
            for i:=1 to n   do begin writeln;
            for j:=1 to n-1 do write (A[i,j]:8);  end;
 
           end;
 
 
 
readln;
end.      
Поделиться:

Похожие статьи: