Если минимальные элементы матриц равны, то найти номер первого столбца, где в матрице А больше отрицательных элементов, чем в таком же столбце матрицы В — Pascal(Паскаль)

По двум заданным матрицам- А(10,6) и В(10,6) сформировать матрицу С(10,6) по следующему правилу: в верхнюю половину записать соответствующие строки из той матрицы, где больше минимальный элемент, а в нижнюю – соответствующие строки из другой матрицы.

program gtd;

label 1;

type
  Dvumer = array [1 .. 4, 1 .. 2] of integer; { отбъявление типа МАТРИЦы 10*6 }

var
  A, B, C: Dvumer; { A,B,C переменные МАТРИЦ 10*6 }
  i, j, n: integer;

function mind(A: Dvumer): integer;
{ ***функция определения МАКС элемента в матрице }
var
  i, j, min: integer;
begin
  min := A[1, 1];
  for i := 1 to 4 do
    for j := 1 to 2 do
      if A[i, j] < min then
        min := A[i, j];
  mind := min;
end; { ***КОНЕЦ функции определения МАКС элемента в матрице }

function otric(A: Dvumer; j: integer): integer;
{ функция в МАТРИЦЕ "А" определяет сколько отрицательных элементов имеем СТОЛБЕЦ "j" }
var
  m: integer;
begin
  m := 0;
  for i := 1 to 4 do
    if A[i, j] < 0 then
      inc(m);
  otric := m;
end; { ***КОНЕЦ функции определения ОТРИЦАТЕЛЬНЫХ элементов }

begin { ***************НАЧАЛО ПРОГРАММЫ************** }
  for i := 1 to 4 do
    for j := 1 to 2 do
    begin
      write('A[', i, ',', j, ']=');
      readln(A[i, j]);
    end; { считывание сс экрана элементов матрицы А }
  for i := 1 to 4 do
    for j := 1 to 2 do
    begin
      write('B[', i, ',', j, ']=');
      readln(B[i, j]);
    end; { считывание сс экрана элементов матрицы В }

  writeln;
  writeln;
  write('A:');
  for i := 1 to 4 do
  begin
    writeln;
    for j := 1 to 2 do
      write(A[i, j]:4); { выводим на экран получившеюся матрицу A }
  END;
  writeln;
  write('B:');
  for i := 1 to 4 do
  begin
    writeln;
    for j := 1 to 2 do
      write(B[i, j]:4); { выводим на экран получившеюся матрицу B }
  END;

  writeln;
  writeln;
  if mind(A) > mind(B) then
    writeln('min(A) ">" min(B)');
  { информируем на экране если max(A) ">" max(B) }
  if mind(A) < mind(B) then
    writeln('min(A) "<" min(B)');
  { информируем на экране если max(A) "<" max(B) }
  if mind(A) = mind(B) then
    writeln('min(A) "=" min(B)');
  { информируем на экране если max(A) "=" max(B) }
  writeln;

  { *******************A<>B***************** }
  if mind(A) <> mind(B) then
  BEGIN
    for i := 1 to 2 do { проходим по VVERX polovina }
      for j := 1 to 2 do
        if mind(A) > mind(B) then
          C[i, j] := A[i, j]
        else
          C[i, j] := B[i, j]; { заполняем VVERX polovina }

    for i := 2 to 4 do { проходим по NIZ polovina }
      for j := 1 to 2 do
        if mind(A) < mind(B) then
          C[i, j] := A[i, j]
        else
          C[i, j] := B[i, j]; { заполняем VVERX polovina }

    write('C:');
    for i := 1 to 4 do
    begin
      writeln;
      for j := 1 to 2 do
        write(C[i, j]:4); { выводим на экран получившеюся матрицу С }
    end;
  END;
  { *****************A=B******* }
  writeln;
  writeln;
  if mind(A) = mind(B) then
  BEGIN { если МИН равны }
    for j := 1 to 2 do { то проходим ВСЕ 6 столвцов }
      if otric(A, j) > otric(B, j)
      then { И СМОТРИМ тот столбец, где встретилось так, что ОТРИЦАТЕЛЬНЫХ больше в А чем в В }
      begin
        writeln('Stolbec= ', j);
        goto 1;
      end; { тогда выводим номер этого столбца на экран и завершаем работу проги }
  END;
1:
  readln;
  readln;

end.

Leave a Comment

+ 40 = 45