Дана целочисленная матрица А(11,14). Если элементы очередного столбца упорядочены по возрастанию, то найти в нем номер 1-го элемента со значением, большим В
Категория: Delphi/Pascal
2012-01-05 22:40:04
В противном случае поменять местами верхнюю и нижнюю половины столбца.
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.
Поделиться: