Если минимальные элементы матриц равны, то найти номер первого столбца, где в матрице А больше отрицательных элементов, чем в таком же столбце матрицы В
Категория: Delphi/Pascal
2012-02-13 21:49:02
По двум заданным матрицам- А(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.
Поделиться: