![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задача 19. Составить программу умножения матрицы A(n, k) на B(k, m).
Решение Program Problem19; uses WinCrt; const n = 6; m = 6; type s = array [1..m, 1..n] of integer; t = array [1..n, 1..m] of integer; f = array [1..m, 1..n] of integer; var a: s; b: t; c: f; i, j: integer; {----------------------------------------------------------------------------------------} Procedure create_two1(n, m: integer; var a: s); var i, j: integer; begin writeln('Заданная первая матрица'); randomize; for i: = 1 to n do begin for j: = 1 to m do begin a[i, j]: = random(21) - 10; write(a[i, j]: 6, ' ') end; writeln end end; {----------------------------------------------------------------------------------------} Procedure create_two2(n, m: integer; var b: t); var i, j: integer; begin writeln('Вторая заданная матрица'); randomize; for i: = 1 to n do begin for j: = 1 to m do begin b[i, j]: = random(11); write(b[i, j]: 6, ' ') end; writeln end end; {----------------------------------------------------------------------------------------} Procedure div_matrix(n, m: integer; a: s; b: t; var c: f); var i, j, k: integer; begin for i: = 1 to n do for j: = 1 to m do begin c[j, i]: = 0; for k: = 1 to m do c[j, i]: = c[j, i] + a[j, k]*b[k, i] end end; {----------------------------------------------------------------------------------------} begin create_two1(n, m, a); create_two2(n, m, b); div_matrix(n, m, a, b, c); writeln('Результат умножения матриц'); for i: = 1 to n do begin for j: = 1 to n do write(c[i, j]: 6, ' '); writeln end end. Задача 20. Процедура удаления заданной строки из массива и вывод нового массива на экран: N - число строк, m - число столбцов, k - номер удаляемой строки.
Решение Procedure distance_line(n, m, k: integer; var a: t); var i, j: integer; begin for i: = k to n - 1 do a[i]: = a[i+1]; writeln('Новый массив без ', k, '-й строки '); for i: = 1 to n - 1 do begin for j: = 1 to m do write(a[i, j]: 6, ' '); writeln end end; Задача 21. Процедура вставки нового столбца в заданный двумерный массив будет следующей: n - число строк заданного массива, m - число столбцов заданного массива, k - номер вставляемой строки, c - массив элементов - новой вставляемой строки. Решение Procedure insert_column(n, m, k: integer; c: f; var a: t); var i, j: integer; begin {Перемещение столбцов в конец для освобождения места} for i: = 1 to n do for j: = m + 1 downto k + 1 do a[i, j]: = a[i, j - 1]; {Вставка нового столбца} writeln('Массив с новым ', k, '-м столбцом'); for i: = 1 to n do a[i, k]: = c[i]; for i: = 1 to n do begin for j: = 1 to m + 1 do write(a[i, j]: 6, ' '); writeln end end; Задача 22. Процедура транспонирования матрицы. Решение Описание массивов может быть таким: Const n = 5; m = 6; Type s = array [1..n, 1..m] of integer; t = array [1..m, 1..n] of integer; Var a: s; b: t; {----------------------------------------------------------------------------------------} Procedure transpose(n, m: integer; a: s; var b: t); var i, j: integer; begin for i: = 1 to n do for j: = 1 to m do b[j, i]: = a[i, j]; end; Задача 23. Процедура упорядочивания и перестановки элементов массива по суммам элементов строк.
Решение Procedure order_summ_column(n, m: integer; var a: t); var i, j, k, f, p: integer; begin for i: = 1 to m do begin k: = i; for j: = i + 1 to m do if a[n + 1, j] < = a[n + 1, k] then k: = j; for f: = 1 to n + 1 do begin p: = a[f, i]; a[f, i]: = a[f, k]; a[f, k]: = p end end end; Задача 24. Генератор сочетаний
|