Определить сумму элементов в каждой строке матрицы. Если минимальная из этих сумм положительная, то поменять местами вторую и третью строки — 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.

Leave a Comment

6 + 4 =