Массивы_2_лекция.ppt
- Количество слайдов: 25
Обработка массивов.
Нахождение минимального элемента массива и его места (одномерного) min: =a [1]; i_min: =1; For i : = 1 to n do If a [i] < min then Begin min: = a [i]; i_min : = i; End;
Нахождение минимального элемента массива и его места (двумерного) min: =b [1, 1]; i_min : = 1; j_min : = 1; For i : = 1 to n do For j : = 1 to m do If b [i, j] < min then Begin min : = b [i, j]; i_min : = i; j_min : =j; End;
Перестановка минимального и первого элементов в массиве одномерном r : = a [1]; a [1] : = a [i_min]; a [i_min] : = r; двумерном r : =b [1, 1]; b [1, 1] : =b [i_min, j_min]; b [i_min, j_min] : = r;
Нахождение произведения нечетных элементов одномерного p : = 1; For i : = 1 to n do If a [ i ] mod 2 <> 0 Then p : =p *a [ i ]; двумерного p : = 1; For i : = 1 to n do For j: =1 to m do If b [ i, j ] mod 2 <> 0 Then p : = p *b [ i, j ];
Элементы главной и побочной диагоналей Элементы на главной диагонали характеризуются тем, что индекс i = j. Для элементов побочной диагонали для любого i индекс столбца j = n – i + 1. Элементы областей выше, ниже главной или побочной диагоналей можно задать или порядком изменения индексов или условиями, накладываемыми на индексы.
a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 21 a 22 a 23 a 24 a 25 a 26 a 27 a 31 a 32 a 33 a 34 a 35 a 36 a 37 a 41 a 42 a 43 a 44 a 45 a 46 a 47 a 51 a 52 a 53 a 54 a 55 a 56 a 57 a 61 a 62 a 63 a 64 a 65 a 66 a 67 a 71 a 72 a 73 a 74 a 75 a 76 a 77
Элементы областей выше, ниже главной диагоналей i = 1, 2, …, n ; j = i, i + 1, …, n i = 1, 2 , …, n; j = 1, 2, …, i или i <= j или n – i – j + 1 >= 0
Элементы областей выше, ниже побочной диагоналей i = 1, 2, …, n; j = 1, 2, … n –i +1 i = 1, 2, …, n; j = n- i + 1, …, n или n – i – j + 1 >= 0 или n - i – j + 1 <= 0
Нахождение суммы положительных элементов выше главной диагонали (включая элементы диагоналей). sum: =0; For i : = 1 to n do For j : = i to n do If b [ i, j ] >= 0 then sum : = sum + b [i, j];
Поменять местами максимальный элемент на главной диагонали и минимальный элемент ниже побочной. Max : = b [1, 1]; I_max : = 1; For i : = 1 to n do If b [ i, i ] > max then Begin Max : = b [ i, i ]; I_max : = i; End;
I_min : = 1; J_min : = n; For i : = 1 to n do For j : = n – i + 1 to n do If b [ i, j ] < Min then Begin Min : = b [ i, j ]; I_min : = i; J_min : = j; End; r : = b [ I_max, I_max ]; b [ I_max, I_max ] : = b [ I_min, J_min ]; b [ I_min, J_min] : = r;
Дана квадратная матрица В размерности n x n. Построить вектор А, где аi – сумма положительных элементов i-ой строки матрицы. For i : = 1 to n do Begin s : = 0; For j : =1 to n do If b [ i, j ] > 0 then s : = s + b [ i, j ]; a [ i ] : = s; End;
Дана квадратная матрица В размерности n x n. В каждом столбце оставить без изменения максимальный элемент столбца, остальные элементы заменить нулями.
For j : = 1 to n do Begin Max : = b [ 1, j ]; I_max : = 1; For i : = 1 to n do If b [ i, j ] > Max then Begin Max : = b [ i, j ] I_max : = i; End; For i : = 1 to n do If i_max <> i then B[ i, j ] : = 0; End;
Дан целочисленный вектор a (n), поменять местами максимальный и минимальный элементы вектора. На печать выдавать исходный вектор, максимальный, минимальный элементы, полученный вектор.
Program Example_Vect; Uses Crt; Const N_max = 10; Var N, i, max, i_max, min, i_min, r : integer; a : array [1. . N_max] of integer; Begin Clrscr; Write (‘Введите размерность массива N (<’, N_max, ’)=’); Read. Ln (N); Write. Ln (‘Введите элементы массива’); For i : = 1 to N do { ввод элементов вектора} Begin Write (‘a [‘, i, ’]=’); Read. Ln (a [ I ] ); End;
Write. Ln (‘Исходный вектор А: ’); For i : =1 to N do { вывод вектора} Write (a [ i ]: 5); Write. Ln; min : = a [ 1 ]; {нахождение минимального элемента} i_min : = 1; {и его индекса} For i : =1 to N do If a [ i ] <min then Begin min : = a [ I ]; i_min : = i; End;
max : = a [ 1 ]; i_max : = 1; {нахождение максимального элемента} For i : = 1 to N do {и его индекса} If A [ i ] > max then Begin max: =A[i]; i_max: =i; End;
Write. Ln (‘Минимальный элемент a [‘, i_min, ’] = ’, min); Write. Ln (‘Максимальный элемент a [‘, i_max, ’] =’, max); r : = a [ i_min]; {перестановка} a[ i_min ]: =a [ i_max]; a [ i_max ] : = r; Write. Ln (‘Полученный вектор a: ’); For i : = 1 to N do {вывод полученного вектора} Write ( a [ i ] : 5); Write. Ln; End.
Транспонировать матрицу a For i : = 1 to n do For j : = i +1 to n do Begin r : = a [ i, j ] ; a [ i, j ] : = a [ j, i ]; a [ j, i ] : = r End;
Произведение матриц Ckj = Матрица a ( m*n ) и матрица b ( n *l ) (строку матрицы a на столбец матрицы b) С ( m *l )
const m = 10; n = 20; l = 15; var a : array [ 1. . m, 1. . n ] of real; b : array [ 1. . n, 1. . l ] of real; c : array [ 1. . m, 1. . l ] of real; i, j, k : integer; s : real;
{ ввод матриц a , b} For k : = 1 to m do For j : = i to l do Begin s : = 0; For i : = 1 to n do s : = s + a [ k, i ] * b [ i, j ] c [ k, j ] : = s End; { вывод матрицы с }
Массивы_2_лекция.ppt