Дана целочисленная матрица А(11,14). Если элементы очередного столбца упорядочены по возрастанию, то найти в нем номер 1-го элемента со значением, большим В

В противном случае поменять местами верхнюю и нижнюю половины столбца.

code: #pascal
program PascalGuru;
 
var A:array[1..11,1..14] of integer;
    i,j,B:integer;
{--------------------------------------------}
procedure vvod;   {процедура ввода массива}
var i,j:integer;
begin
for i:=1 to 11 do
for j:=1 to 14 do begin
write ('A[',i,',',j,']='); readln (A[i,j]); end; {считываем сам массив}
end;
{--------------------------------------------}
procedure vyvod; {процедра вывода массива на экран}
var i,j:integer;
begin
for i:=1 to 11 do begin writeln;
for j:=1 to 14 do write (A[i,j]:8,' '); end;  {выводим массив}
end;
{--------------------------------------------}
function pr_sort(j:integer):boolean; {Проверка, что элементы столбца "j" упорядочены по  возрастанию}
var i:integer;
    rez:boolean;
begin
rez:=true;
for i:=1 to 10 do
if A[i,j]>A[i+1,j] then begin rez:=false; break; end;
 
pr_sort:=rez;
end;
{--------------------------------------------}
function search_el(j,b:integer):integer;  {В столбце "j" находит номер 1-го элемента со значением,  большим "b" }
var i:integer;
    rez:integer;
begin
for i:=1 to 11 do
if A[i,j]>b then begin rez:=i; break;   end;
 
search_el:=rez;
end;
{--------------------------------------------}
procedure exchange(var a,b:integer);
var c:integer;
begin
c:=a; a:=b; b:=c; end;
{*******************************************}
procedure exchange_st(j:integer);       {обмен местами верхней и нижней половины столбца "j"}
var i:integer;
begin
for i:=1 to 5 do exchange(A[i,j],A[i+6,j]);
end;
{--------------------------------------------}
 
 
begin
vvod;  {вводим массив}
 
writeln ('Vot ISHODNYE elementy massiva [11x14]: ');
vyvod;{выводим массив на экран}
 
writeln;
write('B= '); readln(B); {считываем значение "B"}
 
for j:=1 to 14 do {проходим циклом по всем столбцам }
    if pr_sort(j) then {Если элементы текущего столбца упорядочены по возрастанию}
                       writeln('V ',j,' stolbce nomer pervogo (>',B,')= ',search_el(j,B)) {то находим  в нем номер 1-го элемента со значением, большим В}
                  else exchange_st(j);  {иначе меняем местами верхнюю и нижнюю половины текущего столбца }
 
writeln ('Vot OBNOVLENNYI massiv [11x14]: ');
vyvod;  {выводим обновленный массив на экран}
 
readln;
end.      
Поделиться:

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