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

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

code: #pascal
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.
 
Поделиться:

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