- •Лабораторная работа
- •Var a, b : vector_1;
- •Var a, b : array[1..5] of Integer;
- •Var {Описание переменных}
- •I,j : Integer;
- •I,j : Integer;
- •2 Строка: наибольший элемент в 7 столбце равен 0.696
- •4 Строка: наибольший элемент в 4 столбце равен 1.989
- •6 Строка: наибольший элемент в 7 столбце равен 0.960
- •I,j,k:Integer;
- •Задание 2 . Составить программы для решения двух задач.
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.
Вид печати:
Массив 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. Задан двумерный массив , где ; по правилу . Упорядочить массив по возрастанию элементов дробной части третьего столбца. Вывести на печать исходный и отсортированный массивы.
Решение.
Анализ задачи.
Сортировку массива проведем методом прямого обмена. В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут), поэтому этот метод иногда называют «пузырьковым». Этот процесс повторяется на единицу меньшее число раз, чем число элементов в массиве. Дробная часть числа вычисляется функцией .
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. Вывести исходную матрицу, максимальные элементы для каждой строки, а также преобразованную матрицу.
Решение.
Анализ задачи.
На первом этапе определяется структура программы:
Программа:
Формирование и вывод исходной матрицы.
Проверка и удаление строк.
Вывод преобразованной матрицы.
Конец программы.
Из выделенных подзадач формирование и вывод матрицы представляет достаточно простой фрагмент, реализующийся вложенным счетным циклом, внутри которого организован разветвляющийся процесс. Нахождение максимального элемента рассмотрено в задаче 2 в данной лабораторной работе. Для удаления строк будем использовать следующий прием. Пусть переменная изменяется в цикле и обеспечивает адресацию следующей анализируемой строки. Тогда переменную увеличиваем на единицу, если обнаружена еще одна строка, которую необходимо оставить в матрице. При этом оставляемая строка переписывается на место, указанное данной переменной. После завершения цикла просмотра матрицы переменная содержит число строк, которые необходимо оставить в матрице. Строки, содержащиеся в остальной части матрицы, на экран не выводятся.
2 . Блок-схема:
3. Программа:
Program Matr_Usl;
Var
A:array[1..8,1..6] of real;
Max:real;