Пример 2. Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы. PROGRAM EX_1; CONST n=3; {Количество строк} m=5; {Количество столбцов} TYPE mas=array[1..n,1..m] of real; VAR b: mas; {Массив} i: integer; {Индекс строки} j: integer; {Индекс столбца} s: real; {Сумма} BEGIN {Ввод значений матрицы} Writeln('Введите значения элементов матрицы:'); for i:=1 to n do for j:=1 to m do readln(b[i,j]); {Вычисление суммы} s:=0; for i:=1 to n do for j:=1 to m do s:=s+b[i,j]; writeln('Сумма = ',s); END. Пример3. Дана матрица целых чисел размером 4x4. Заменить все элементы главной диагонали на нули. Вывести на экран монитора содержимое матрицы до обработки и после обработки. PROGRAM EX_2; VAR matr: array[1..4,1..4] of integer; {Матрица} i: integer; {Индекс строки} j: integer; {Индекс солбца} BEGIN {Ввод значений матрицы} for i:=1 to 4 do for j:=1 to 4 do begin write('Введите элемент ',i,' ',j,' '); readln matr[i,j]; end; {Вывод содержимого матрицы до обработки} Writeln('Содержимое матрицы до обработки'); for i:=1 to 4 do begin for j:=1 to 4 do write(matr[i,j]:4); writeln; end; {Обработка матрицы} for i:=1 to 4 do matr[i,i]:=0; {Вывод содержимого матрицы после обработки} Writeln('Содержимое обработанной матрицы '); for i:=1 t0 4 do begin for j:=1 to 4 do write(matr[i,j]:4); writeln; end; END. Пример 4. В матрице P(5, 6) поменять местами максимальный и минимальный элементы. Программа решения этой задачи содержится в следующем листинге. program Swaping; {Обмен местами max и min элементов матрицы} uses CRT; const N = 5; M = 6; {Количество строк и столбцов матрицы} var MatP : array [1..N, 1..M] of Integer; {Матрица} Pmax, Pmin : Integer; {Значения max и min элементов} Imax, Jmax, {Индексы max элемента} Imin, Jmin, {Индексы min элемента} i, j : Byte; {Параметры циклов} begin {Swaping} {Заполнение матрицы случайными числами и вывод по строкам} Randomize; {Инициализация генератора случайных чисел} ClrScr; Writeln; Writeln (' ':4, 'Исходная матрица P'); for i := 1 to N do begin for j := 1 to M do begin MatP [i, j] := Random (50); Write (' ', MatP [i, j]:3); end; {for j} Writeln; end; {for i} {Начальные значения max и min} Pmax := MatP [1, 1]; Imax := 1; Jmax := 1; Pmin := MatP [1, 1]; Imin := 1; Jmin := 1; {Поиск max и min элементов матрицы} for i := 1 to N do {Перебор строк} for j := 1 to M do begin {Перебор элементов строки} if MatP [i, j] > Pmax then begin {Запоминание max элемента и его индексов} Pmax := MatP [i, j]; Imax := i; Jmax := j; end; {if max} if MatP [i, j] < Pmin then begin {Запоминание min элемента и его индексов} Pmin := MatP [i, j]; Imin := i; Jmin := j; end; {if min} end; {for j} Writeln; Writeln (' ':4, 'max: ', 'P [', Imax, ', ', Jmax, '] = ', MatP [Imax, Jmax]:2); Writeln (' ':4, 'min: ', 'P [', Imin, ', ', Jmin, '] = ', MatP [Imin, jmin]:2); {Обмен местами max и min элементов матрицы} MatP [Imax, Jmax] := Pmin; MatP [Imin, Jmin] := Pmax; {Вывод измененной матрицы P по строкам} Writeln; Writeln (' ':3, 'Измененная матрица P'); for i := 1 to N do begin {Перебор строк} for j := 1 to M do {Перебор элементов строки} Write (' ', MatP [i, j]:3); Writeln; end; {for i} end. {Swaping} Вначале во вложенных циклах по i и j происходит построчное заполнение элементов матрицы P. Априорно в качестве максимального и минимального элементов принимается элемент P [1,1]. Во вложенных циклах по i и j построчно перебираются и просматриваются элементы матрицы, при этом запоминаются наибольший и наименьший элементы среди просмотренных, а также номера строк и столбцов, в которых они расположены. Далее на место максимального элемента записывается минимальный и наоборот. Вывод измененной матрицы производится построчно аналогично заполнению. Пример 5. Дана матрица A(3,4), и вектор B (4), состоящие из целых чисел . Умножить матрицу А на вектор В .program pr4-2 ; const m=3; n=4; var a : array [ 1 .. m, 1 .. n ] of integer; (* описание матрицы *) b : array [ 1 .. n ] of integer; (* описание вектора *) c : array [ 1 .. m ] of integer; ( * описание С *) i, j: integer; begin for i:=1 to m do (* ввод матрицы *) begin writeln (‘введите элементы ‘, i , ‘-той строки’); for j:=1 to n do read (a [i, j] ); writeln; end; writeln (‘введите элементы вектора’); for j:=1 to n do (* ввод вектора *) read (b[ j]); writeln; for i:=1 to m do begin c [ i ]:=0; for j:=1 to n do c[i] := c[ i ]+ a[i , j]* b[j]; end; for i:=1 to m do (*форматный вывод матрицы *) begin for j:=1 to n do write (a [i, j]: 4 ); writeln; end; for j:=1 to n do write (b [ j ] :4); (* вывод массива B *) writeln ; for i:=1 to m do write (c [ i ] :4); (* вывод массива С *) readln; end. В программе элементы матрицы вводятся по строкам по одному с подтверждением клавишей Enter. А выводятся в общепринятом виде: каждая строка матрицы с новой строки экрана (цикл i по строкам внешний, а цикл j – внутренний) |