Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_k_KR.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
344.06 Кб
Скачать

Var b : Tb; Var k : word);

Var hi, hj : integer; nw, I : word;

Begin

if abs(ib-ia) > abs(jb-ja) then nw:=abs(ib-ia)

else nw:=abs(jb-ja);

hi:=0; if ib-ia > 0 then hi:=1;

if ib-ia < 0 then hi:=-1;

hj:=0; if jb-ja > 0 then hj:=1;

if jb-ja < 0 then hj:=-1;

for i:=0 to nw do

begin inc(k); b[k]:=a[ia+hi*i, ja+hj*i]; end;

End;

// Глобальные переменные и основная программа.

Var a : Ta; b : Tb;

I, k : word;

BEGIN

InA(n,n,a);

OutA(n,n,a);

k:=0;

AddWay(a, n, 1, 1, 1, n-1, b, k);

AddWay(a, n, 1, n, n, 1, b, k);

AddWay(a, n, n, 2, n, n, b, k);

for i:=1 to k do write(b[i]:3);

readln;

END.

Задача 1.4.

В прямоугольной матрице m*n (m, n < 7) с элементами типа INTEGER вместо строки, содержащей максимальное значение произведений соседних элементов, поместить строку, содержащую максимальный элемент всей матрицы. В основной программе вывести исходную матрицу, индексы строк и результирующую матрицу.

Алгоритм этой программы, по сути, сводится к определению индексов двух строк. Функция IndMaxMatr для нахождения индекса строки, содержащей максимальный элемент всей матрицы, достаточно тривиальна. Фактически она находит оба индекса максимального элемента, но возвращает только один.

Несколько сложнее устроена функция IndMaxStrP для нахождения индекса строки, содержащей максимальное значение произведения соседних элементов, так как вначале эти произведения надо вычислить. С этой целью в функции определена локальная функция MaxP определения максимального значения произведения соседних элементов в строке row матрицы a.

Смысл остальных действий понятен из комментариев.

Листинг 1.4. Заголовок программы, определение процедур InA и OutA опущены.

Const m=5; n=7;

Type Ta = array[1..m, 1..n] of integer;

// Здесь поместить тексты процедур InA и OutA.

// Функция определения индекса строки, содержащей

// максимальный элемент всей матрицы.

Function IndMaxMatr(m, n : word; a : Ta):word;

Var I, j, jmax: word;

Begin

result:=1; jmax:=1;

for i:=1 to m do

for j:=1 to n do

if a[i,j]>a[result, jmax] then

begin result:=i; jmax:=j; end;

End;

// Функция определения индекса строки, содержащей

// максимальное значение произведения соседних

// элементов. Внутри определена локальная функция.

Function IndMaxStrP(m, n : word; a : Ta):word;

Function MaxP(row : word) : integer;

Var j : word;

Begin

result:=a[row,1]*a[row,2];

for j:=1 to n-1 do

if a[row,j]*a[row,j+1]>result

then result:=a[row,j]*a[row,j+1];

End;

Var I, j : word;

Begin

result:=1;

for i:=1 to m do

if MaxP(i)>MaxP(result) then result:=i;

End;

// Глобальные переменные и основная программа.

Var a : Ta;

j, imatr, ipstr : word;

BEGIN

// Ввод и вывод исходной матрицы.

InA(m,n,a);

OutA(m,n,a);

// Определение и вывод индексов строк.

imatr:=IndMaxMatr(m, n, a);

writeln(' imatr=',imatr);

ipstr:=IndMaxStrP(m, n, a);

writeln(' istrp=',ipstr);

// Замена строки и вывод результата.

for j:=1 to n do a[ipstr,j]:=a[imatr,j];

OutA(m,n,a);

readln;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]