Лекция: Пример 8.10

Дана матрица MAT(5*5), состоящая из вещественных элементов. Поменять местами строки матрицы, содержащие максимальный и минимальный элементы.

program MinMax;

type m = array [1..5] of real ;

var mat: array [1..5] of m ;

str: m;

maxi, mini, i, j, i1, j1: integer ;

begin

write (‘введите матрицу — ‘);

for i:=1 to 5 do

for j:=1 to 5 do read (mat[ i, j]);

i1:=1; j1:=1; {индексы минимального элемента }

i2:=1; j2:=1; {индексы максимального элемента}

for i:=1 to 5 do

for j:=1 to 5 do

if mat [ i, j] > mat[ i2, j2] then

begin

i2 := i; j2 := j {запомнить индексы

нового максимума}

end

else

if mat [i, j] < mat [i1, j1] then

begin

i1 := i; j1 := j; {запомнить индексы

нового минимума}

end;

str := mat[ i2 ]; {замена строки матрицы mat,}

mat [ i2 ] := mat[ i1 ]; {содержащей максимальный}

mat [ i1] := str; {элемент, строкой с мини-

мальным элементом и наоборот}

for i:=1 to 5 do

begin

for j:=1 to 5 do write (mat [ i, j]);

writeln

end

end.

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

Первая задача является разновидностью типовой задачи поиска максимума или минимума (пример 7.11).

Отличие от типовой заключается в том, что определяются не сами максимальный и минимальный элементы матрицы, а их индексы. Для хранения индексов в процессе счета используются переменные i1, j1 — для минимального элемента è i2, j2- длямаксимального.

Для решения второй задачи используются три оператора присваивания, в которых участвуют строки матрицы с максимальным и минимальным элементами и эквивалентный им вспомогательный одномерный массив str.

Схема алгоритма

 

       
 
 
   

 


Вопросы для самопроверки

 

1) К каким операциям сводится обработка матрицы?

2) Каким образом производится перебор элементов матрицы в процессе выполнения операций над ней?

3) Как описываются двумерные массивы?

4) Как производится обращение к элементу двумерной матрицы в программе?

5) Как в программе осуществляется ввод (вывод) двумерных массивов?

6) Допустимо ли пересечение тел внешнего и внутреннего циклов?

7) Могут ли внешний и внутренний циклы заканчиваться одним оператором?

8) Разрешен ли вход во внутренний цикл, минуя его оператор цикла?

9) В каких случаях возможна передача управления из внутреннего цикла во внешний?

10) Является ли правильным описание массива:

var massiv = array [1..7;0..10] of real?

 
 
еще рефераты
Еще работы по информатике