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

I,j : Integer;

BEGIN

for i:=2 to 7 do

for j:=1 to 9 do

a[i,j]:= sin(i+j) + cos(i-j); {Вычисление элементов массива}

{ Печатаем массив в виде таблицы }

WriteLn('Массив A') ;

for i:=2 to 7 do

begin

for j:=1 to 9 do

write(a[i,j]:6:3,' ');

writeln; {перевод курсора на следующую строку}

end ;

sum:=0;{ Обнуляем переменную для подсчета суммы }

for i:=2 to 7 do begin

if odd(i)=false then begin

{ Присваиваем максимуму значение первого элемента в столбце }

Max := a[i,1];

{ Ищем максимальный элемент и его номер, начиная со следующей строки }

for j:=2 to 9 do

if Max < a[i,j] then begin

Max := a[i,j] ;

N_Max := j ; end ;

sum := sum + Max;

WriteLn(i:2,' строка:',' наибольший элемент в ',N_Max:1,

' столбце ','равен ',Max:6:3) ;

end ;

end;

WriteLn('сумма наибольших элементов равна ',sum:6:3) ;

End.

  1. Вид печати:

Массив A

0.681 0.243 -0.419 -0.696 -0.333 0.336 0.696 0.416 -0.246

-1.173 -0.419 0.721 1.197 0.573 -0.578 -1.198 -0.716 0.424

-1.949 -0.696 1.197 1.989 0.952 -0.960 -1.990 -1.190 0.704

-0.933 -0.333 0.573 0.952 0.456 -0.460 -0.953 -0.570 0.337

0.941 0.336 -0.578 -0.960 -0.460 0.463 0.960 0.574 -0.340

1.950 0.696 -1.198 -1.990 -0.953 0.960 1.991 1.191 -0.704

2 Строка: наибольший элемент в 7 столбце равен 0.696

4 Строка: наибольший элемент в 4 столбце равен 1.989

6 Строка: наибольший элемент в 7 столбце равен 0.960

сумма наибольших элементов равна 3.645

Пример 3. Задан двумерный массив , где ; по правилу . Упорядочить массив по возрастанию элементов дробной части третьего столбца. Вывести на печать исходный и отсортированный массивы.

Решение.

  1. Анализ задачи.

Сортировку массива проведем методом прямого обмена. В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут), поэтому этот метод иногда называют «пузырьковым». Этот процесс повторяется на единицу меньшее число раз, чем число элементов в массиве. Дробная часть числа вычисляется функцией .

2 . Блок-схема:

3. Программа:

program Sortirovka;

TYPE

Matrix=array [1..6,1..4] of real;

VAR

a : Matrix;

R : Real;

k, i,j : Integer;

BEGIN

for i:=1 to 6 do

for j:=1 to 4 do

a[i,j]:= sin(2*i-j); {Вычисляем элементы массива}

{ Печатаем массив в виде таблицы }

WriteLn('Матрица A') ;

for i:=1 to 6 do begin

for j:=1 to 4 do write(a[i,j]:6:3,' '); { Вывод на экран массива A }

writeln; end ;

writeln; {Пропуск пустой строки}

for i:=2 to 6 do for j:=6 downto i do

if Frac(a[j-1,3]) > Frac(a[j,3]) then

for k := 1 to 4 do {Перестановка строк}

begin R := a[j-1,k] ;

a[j-1,k] := A[j,k] ;

a[j,k] := R;

end;

WriteLn('отсортированная матрица A имеет вид ') ;

for i:=1 to 6 do begin for j:=1 to 4 do

write(a[i,j]:6:3,' '); { Вывод на экран отсортированного массива A }

writeln;

end ;

End.

4. Вид печати:

Матрица A

0.841 0.000 -0.841 -0.909

0.141 0.909 0.841 0.000

-0.959 -0.757 0.141 0.909

0.657 -0.279 -0.959 -0.757

0.412 0.989 0.657 -0.279

-1.000 -0.544 0.412 0.989

отсортированная матрица A имеет вид

0.657 -0.279 -0.959 -0.757

0.841 0.000 -0.841 -0.909

-0.959 -0.757 0.141 0.909

-1.000 -0.544 0.412 0.989

0.412 0.989 0.657 -0.279

0.141 0.909 0.841 0.000

Пример 4. Разработать программу, формирующую матрицу  , размерности 8 строк и 6 столбцов, элементы которой определяются по формуле

где - номер строки. - номер столбца элемента матрицы. В сформированной матрице удалить все строки, максимальный элемент которых равен 7. Вывести исходную матрицу, максимальные элементы для каждой строки, а также преобразованную матрицу.

Решение.

  1. Анализ задачи.

На первом этапе определяется структура программы:

Программа:

Формирование и вывод исходной матрицы.

Проверка и удаление строк.

Вывод преобразованной матрицы.

Конец программы.

Из выделенных подзадач формирование и вывод матрицы представляет достаточно простой фрагмент, реализующийся вложенным счетным циклом, внутри которого организован разветвляющийся процесс. Нахождение максимального элемента рассмотрено в задаче 2 в данной лабораторной работе. Для удаления строк будем использовать следующий прием. Пусть переменная изменяется в цикле и обеспечивает адресацию следующей анализируемой строки. Тогда переменную увеличиваем на единицу, если обнаружена еще одна строка, которую необходимо оставить в матрице. При этом оставляемая строка переписывается на место, указанное данной переменной. После завершения цикла просмотра матрицы переменная содержит число строк, которые необходимо оставить в матрице. Строки, содержащиеся в остальной части матрицы, на экран не выводятся.

2 . Блок-схема:

3. Программа:

Program Matr_Usl;

Var

A:array[1..8,1..6] of real;

Max:real;